2013-04-20 95 views
2

我一直在努力實現與軌道和燼標記,在此基礎上railscast:http://railscasts.com/episodes/382-tagging灰燼數據:觀察關聯模型

我設置了tagList屬性,我會灰燼數據模型喜歡每次標籤的改變(使用以下方法setTagList)中設置:

App.Post = DS.Model.extend({ 
    tags: DS.hasMany('App.Tag'), 
    tagList: DS.attr('string'), 

    setTagList: function() { 
    if(this.get('tags.length')) { 
     var tagList = this.get('tags').map(function(tag) { 
     return tag.get('name'); 
     }).join(', '); 
     this.set('tagList', tagList); 
    } 
    }.observes('isLoaded', 'tags', '[email protected]') 
}); 

我遇到的第一個錯誤是:

Uncaught TypeError: Cannot call method 'send' of null 

我認爲這是觀察tags[email protected]的結果。我也讀過,可能有issues with observing nested properties

其次,通過移除這些依賴離開.observes('isLoaded'),下面的錯誤被拋出:

Uncaught Error: Attempted to handle event `materializingData` on <App.Post:ember283:1> while in state rootState. Called with undefined 

這是由任何調用引起this.get('tags')

見JSBin:http://jsbin.com/iyoyax/7/edit

任何人都可以建議我怎麼可能會觀察到一個相關的模型設置在同一個模型的另一個屬性?

在此先感謝

+0

我在這裏看到一些不尋常的東西。爲什麼你有'setTagList'觀察者?是否應該設置'tagList'屬性(目前沒有這樣做)?如果是這樣,爲什麼不使'tagList'成爲一個計算屬性? – mehulkar 2013-07-22 23:51:49

+0

我已更新示例以包括設置tagList屬性。它不能是一個計算的屬性,因爲它是持久的(因此需要是一個'DS.attr') – 2013-07-24 20:28:14

回答

0

我不知道爲什麼你的情況下,沒有具體工作,但我願意打賭,使用ember-data-latestember rc2有事情做吧。

你的代碼似乎很好。這是一個工作小提琴:http://jsfiddle.net/DBtu6/5/

我所做的唯一更改是使用rc6與最新的ember-data並將map函數更改爲mapProperty

我也使用JSFiddle而不是JSBin,因爲我無法弄清楚如何使用後者的控制檯,我只是更熟悉小提琴。希望這可以幫助。