belongsTo不使用嵌入式记录?

时间:2014-09-03 02:38:03

标签: ember.js ember-data

如果我有一些Color,每个Foo s(嵌入式),我如何从任何给定的color取回foo

鉴于

App.ColorSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
  attrs: {
    foos: {embedded: 'always'}
  }
});

App.Color = DS.Model.extend({
  color: DS.attr(),
  foos: DS.hasMany('foo')
});

App.Foo = DS.Model.extend({
  color: DS.belongsTo('color'), 
  name: DS.attr()
});

模板不打印与color相关联的右foo

{{#each foo in color.foos}}
  <li>
  {{foo.name}} - {{ foo.color }}
 </li>
{{/each}

我错过了什么? DS.belongsTo('color')不是正确定义关系的方法吗?我玩inverse和其他类型的嵌入也没有运气。

请参阅jsbin:http://emberjs.jsbin.com/OxIDiVU/1020/edit{{ foo.color }}没有打印出来)

2 个答案:

答案 0 :(得分:0)

为了使belongsTo能够处理foo,foo记录必须包含颜色ID。
例如

{
    id:1,
    color: 1,
    name:'something 1'
}

在此处使用bin:http://emberjs.jsbin.com/OxIDiVU/1024/edit

答案 1 :(得分:0)

App.Color = DS.Model.extend({
  color: DS.attr(),
  foos: DS.hasMany('foo'),

  didLoad: function() {
    this.get('foos').forEach(function(foo) {
      foo.set('color', this);
    }.bind(this));
  }

});

优等!