如何处理ember.js模型中的标签

时间:2012-02-21 15:53:38

标签: javascript ruby-on-rails json ember.js

我有一个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值因为你不能将字符串(比如/ tags /)连接到值,所以我不能使用{{bindAttr}}。这给我留下了每个标签的计算属性(这是“正确的方法”,according to this)(因此计算属性“tagurl”只返回"/tag/" + tag.id),但我不知道如何这样做是因为我不确定应该如何存储标签(上面的问题1)。

1 个答案:

答案 0 :(得分:1)

在代码中扩展视图:

App.tagView = Em.View.extend
     templateName: "tTagView"
     tagURL: (->
          '/tag/" + @get('id')
     ).property()

在你的把手中做这个

 {{#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>

以下是小提琴中的所有内容: http://jsfiddle.net/herTY/12/