如何在 ember js 中以一对多的关系将父对象添加到子对象
How to add parent object to child in a one-to-may relationship in ember js
我在 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
中没有任何内容。我也尝试了一些异步承诺解析,但没有成功。如果有人可以 post 一个如何管理这个的例子,那就太好了。
基本上这按您预期的那样工作。但是你有一些小错误:
- 有时使用
child
,有时使用 child-object
。 parent
. 也是如此
findRecord
returns一个PromiseObject
。您可能想等待 promise 解决。
- 不是
addObject
。
你也可以从两边做。要么设置 parent:
this.store.findRecord('parent-object', 2).then(parent => {
const child = this.store.createRecord('child-object');
child.set('parent', parent);
});
或者你把child加到children:
this.store.findRecord('parent-object', 2).then(parent => {
const child = this.store.createRecord('child-object');
parent.get('children').pushObject(child);
});
也许看看 this twiddle。
我在 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
中没有任何内容。我也尝试了一些异步承诺解析,但没有成功。如果有人可以 post 一个如何管理这个的例子,那就太好了。
基本上这按您预期的那样工作。但是你有一些小错误:
- 有时使用
child
,有时使用child-object
。parent
. 也是如此
findRecord
returns一个PromiseObject
。您可能想等待 promise 解决。- 不是
addObject
。
你也可以从两边做。要么设置 parent:
this.store.findRecord('parent-object', 2).then(parent => {
const child = this.store.createRecord('child-object');
child.set('parent', parent);
});
或者你把child加到children:
this.store.findRecord('parent-object', 2).then(parent => {
const child = this.store.createRecord('child-object');
parent.get('children').pushObject(child);
});
也许看看 this twiddle。