我一直致力于使用rails和ember实现标记,基于此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', 'tags.@each.name')
});
我遇到的第一个错误是:
Uncaught TypeError: Cannot call method 'send' of null
我认为这是观察tags
和tags.@each.name
的结果。我还读到可能有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 :(得分:0)
我不确定为什么你的案子不具体,但是我愿意打赌用ember-data-latest
与ember rc2
有关的事情与它有关
您的代码似乎很好。这是一个有效的小提琴:http://jsfiddle.net/DBtu6/5/
我所做的唯一更改是将rc6与ember-data-latest一起使用,并将map
函数更改为mapProperty
。
我也使用JSFiddle而不是JSBin因为JSBin因为我无法弄清楚如何使用后者的控制台而且我对小提琴更熟悉。希望这可以帮助。