我在ember.js中有两个模型,它们具有一对一的关系。现在我想创建一个新的子对象,并需要分配一个关联的父对象。我无法弄清楚如何做到这一点。我的模型使用以下代码定义:
父对象模型
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
children: DS.hasMany('child')
});
子对象模型
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
parent: DS.belongsTo('parent')
});
在路径的model()
- 方法中创建子对象。
var child = this.store.createRecord('child');
然后查询父对象。
var parent = this.findRecord('parent', 2);
然后我试着将它们绑在一起,但是我尝试失败了。例如:
parent.get('child').addObject(child) // or
parent.get('child').pushObject(child) // or
child.set('parent', parent)
这些事情导致parent
child
和child
中没有任何内容parent
中没有任何内容。我也做了一些尝试,异步承诺解决但没有成功。如果有人可以发布一个如何管理它的例子,那就太好了。
答案 0 :(得分:1)
基本上这可以按预期工作。但是你有一些小错误:
child
,有时使用child-object
。同样适用于parent
。findRecord
返回PromiseObject
。您可能希望等待承诺解决。addObject
。你也可以从两边做到。设置父级:
this.store.findRecord('parent-object', 2).then(parent => {
const child = this.store.createRecord('child-object');
child.set('parent', parent);
});
或者您将孩子添加到孩子:
this.store.findRecord('parent-object', 2).then(parent => {
const child = this.store.createRecord('child-object');
parent.get('children').pushObject(child);
});
也许请查看this twiddle。