将记录与Ember数据相关联

时间:2014-11-04 09:17:01

标签: ember.js ember-data

我有这个设置:

App.MyModel = Em.Model.extend({
  someValue: DS.attr('string'),
  parent   : DS.belongsTo('mymodel',{async:true, inverse:'rooms'}),
  rooms    : DS.hasMany('mymodel', {async:true, inverse:'parent'})
});

App.MyRoute = Em.Route.extend({
  model:function(params){
    var parent = this.store.find('mymodel', params.parent_id);
    return this.store.createRecord('mymodel',{parent:parent});
  }
});

params.parent_id拥有我想要的ID,因此find()应该返回正确的记录。

然后someValue绑定在模板的输入框中,输入后调用操作create

App.MyController = Ember.ObjectController.extend({
  actions:{
    create:function(){
      this.get('model').save();
    }
  }
});

但是,当数据发送到服务器时,只有someValue具有正确的数据,parentnull

我不知道错误是在模型定义中还是在我设置关系的方式中。

如何正确设置记录关系?

1 个答案:

答案 0 :(得分:0)

find的承诺应解析为实际对象。

但是在问题中使用它时这不起作用。

有一种不同的方法,可以在已加载所需记录时使用。

model: function(params){
  return this.store.createRecord('mymodel', {
    'parent': this.store.getById('mymodel', params.parent_id)
  });  
}

这样可行,因为我来自的路线已经加载了父母。