2

基于此 railscast,我一直致力于使用 rails 和 ember 实现标记:http: //railscasts.com/episodes/382-tagging

我已经设置了一个带有tagList属性的 ember-data 模型,我想在每次标签更改时设置它(使用以下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。我还读到观察嵌套属性可能存在问题

其次,通过删除这些依赖项 leave .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

谁能建议我如何观察关联模型以在同一模型上设置另一个属性?

提前致谢

4

1 回答 1

0

我不确定为什么您的案例没有特别有效,但我愿意打赌使用ember-data-latestwithember rc2与它有关。

你的代码看起来不错。这是一个正在工作的小提琴:http: //jsfiddle.net/DBtu6/5/

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

我还使用了 JSFiddle 而不是 JSBin,因为 JSBin 因为我不知道如何使用后者的控制台,而我只是更熟悉 fiddle。希望这可以帮助。

于 2013-07-24T23:18:51.003 回答