我有这个设置:
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
具有正确的数据,parent
为null
。
我不知道错误是在模型定义中还是在我设置关系的方式中。
如何正确设置记录关系?
答案 0 :(得分:0)
find
的承诺应解析为实际对象。
但是在问题中使用它时这不起作用。
有一种不同的方法,可以在已加载所需记录时使用。
model: function(params){
return this.store.createRecord('mymodel', {
'parent': this.store.getById('mymodel', params.parent_id)
});
}
这样可行,因为我来自的路线已经加载了父母。