2012-02-21 78 views
2

处理标签我有一个Ember.js模型基本上只是一个ID,一个标题,正文和标签,每个标签都有一个ID和标题。下面是我从Rails喂养Ember的JSON:如何在ember.js模型

{"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)。

+0

任何这暗示:https://stackoverflow.com/questions/44259423/rails-and-ember-with-acts-as-taggable-on-how-to-handle-relationships-in-jsonapi? – 2017-05-30 11:40:46

回答

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/

+0

那么应该如何存储标签呢?将它们存储在单独的模型中并将它们关联起来是否有意义? – 2012-02-21 16:30:34

+0

他们很好,你有他们(在一个数组)。 – 2012-02-21 16:57:50

+0

任何这暗示:https://stackoverflow.com/questions/44259423/rails-and-ember-with-acts-as-taggable-on-how-to-handle-relationships-in-jsonapi? – 2017-05-30 11:40:38