javascript - 如何在ember js中以一对多关系将父对象添加到子对象

标签 javascript ember.js ember-data

我在 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);

然后我尝试将它们绑定(bind)在一起,但我尝试的任何操作都失败了。例如:

parent.get('child').addObject(child) // or
parent.get('child').pushObject(child) // or
child.set('parent', parent)

这些事情导致parentchild中没有任何内容,并且childparent中没有任何内容。我还尝试了一些异步 promise 解析,但没有成功。如果有人可以发布一个如何管理此问题的示例,那就太好了。

最佳答案

基本上这正如你所期望的那样工作。但你有一些小错误:

  • 有时您使用child,有时使用child-object父级也是如此。
  • findRecord 返回一个 PromiseObject。您可能想要等待 promise 解决。
  • 它不是 addObject

您也可以从两侧进行。设置父级:

this.store.findRecord('parent-object', 2).then(parent => {
  const child = this.store.createRecord('child-object');
  child.set('parent', parent);
});

或者将 child 添加到 child 中:

this.store.findRecord('parent-object', 2).then(parent => {
  const child = this.store.createRecord('child-object');
  parent.get('children').pushObject(child);
});

也许看看 this twiddle .

关于javascript - 如何在ember js中以一对多关系将父对象添加到子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43482657/

相关文章:

javascript - 如何将json数据一一添加到csv文件中?

javascript - jQuery 当指向链接时应显示默认隐藏的 div

javascript - 当用户查看页面的那部分时如何制作 CSS "execute"?

javascript - 在 Ember.js 中,如何从 App.Router 获取 rootURL?

javascript - window.load 不起作用

javascript - Ember : a place for common property?

javascript - 如何从 Ember Power Select 传递数据?

ember.js - Ember 数据有很多只加载在 canonicalState 属性中的记录

ember.js - Ember 数据未加载属于使用夹具的关系

css - ember 引擎插入的 div 标签的控制样式