2012-02-21 79 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