Ember数据:观察相关模型

时间:2013-04-20 23:59:33

标签: ember.js ember-data

我一直致力于使用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

我认为这是观察tagstags.@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

有人可以建议我如何观察相关模型在同一模型上设置另一个属性吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

我不确定为什么你的案子不具体,但是我愿意打赌用ember-data-latestember rc2有关的事情与它有关

您的代码似乎很好。这是一个有效的小提琴:http://jsfiddle.net/DBtu6/5/

我所做的唯一更改是将rc6与ember-data-latest一起使用,并将map函数更改为mapProperty

我也使用JSFiddle而不是JSBin因为JSBin因为我无法弄清楚如何使用后者的控制台而且我对小提琴更熟悉。希望这可以帮助。