我有一个 Ember.js 模型,它基本上只是一个 ID、一个标题、一个正文和标签,其中每个标签都有一个 ID 和一个标题。这是我从 Rails 提供给 Ember 的 JSON:
{"created_at":"2012-02-19T03:28:26Z",
"body":"Example body",
"id":1,
"title":"Example title",
"updated_at":"2012-02-19T03:28:26Z"
"tags" :
{"id":1,
"name":"retweet"},
{"id":2,
"name":"twitter"},
{"id":3,
"name":"social"}
}
问题 1:如何在 Ember.js 模型中为标签建模?是否应该只有一个包含 JS 标签数组的“标签”字段,或者每个标签应该有一个字段,所以会有 tag1、tag2、tag3 等,其中每个字段都有一个 ID 数组和标题?
问题 2:在我的 Handlebars 模板中,如何使用标签将每个标签链接到 /tags/{{tag.id}}?
我不能只使用 <a href="/tags/{{tag.id}}"></a>
因为您不能将 Handlebars 值嵌入到这样的属性中,而且我不能使用 {{bindAttr}} 因为您不能将字符串(如/tags/)连接到该值。这给我留下了每个标签的计算属性(这是“正确的方法”, according to this )(因此计算属性“tagurl”只会返回 "/tag/" + tag.id
),但我不确定该怎么做,因为我不确定标签应该如何存储(上面的问题 1)。
最佳答案
在代码中扩展一个 View :
App.tagView = Em.View.extend
templateName: "tTagView"
tagURL: (->
'/tag/" + @get('id')
).property()
在你的 Handlebars 上这样做
{{#each tags}}
{{view App.tagView content=this}}
{{/each}}
你需要一个模板
<script id="tTagView" data-template-name='tTagView' type="text/x-handlebars">
<a {{bindAttr href="tagURL"}}>{{Name}}</a>
</script>
这里是所有工作的 fiddle : http://jsfiddle.net/herTY/12/
关于javascript - 如何处理 ember.js 模型中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9380622/