【问题标题】:How to add array of objects to a newly created object with a hasMany relationship in Ember?如何在 Ember 中将对象数组添加到具有 hasMany 关系的新创建对象?
【发布时间】:2013-06-12 11:18:40
【问题描述】:

举个例子:

//Parent object:
App.Parent = DS.Model.extend({
children: DS.hasMany('child');
name: DS.attr('string');
});

//Child object:
App.Child = DS.Model.extend({
parent: DS.belongsTo('App.Parent');
name: DS.attr('string');
});

我正在尝试创建一个包含许多子对象的新父对象:

var child1 = App.Child.createRecord({
name: "Test"
});

var child2 = App.Child.createRecord({
name: "Test2"
});

var newChildrenArray = [];
newChildrenArray.pushObject(child1);
newChildrenArray.pushObject(child2);

var parent = App.Parent.createRecord({
children: newChildrenArray,
name: "Hello :-)"
});

如果我通过警报循环访问,我可以访问 parent.get('children') 并访问孩子的姓名。但是在我的车把模板中,孩子不会像我的父母和孩子FIXTURES那样出现在父母的下方。 我是否需要以某种方式告诉我的模板重新渲染,或者模板没有加载 hasMany 关联,还是我创建的关系有误?

我正在使用最新版本的 Ember、Ember-Data、Handlebars 等,但尝试了其他版本无济于事,所以我一定是做错了什么。

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    我尝试了各种方法将我的数组放到父对象的“子”属性中,但我在 Github 上的拉取请求代码 sn-p 中偶然发现了这一点,现在它正在工作。

    我猜我的数组是父对象属性的错误类型,我仍然不知道如何创建一个单独的数组以稍后传递给对象,但直接推入它可以工作!

    var child1 = App.Child.createRecord({
    name: "Test"
    });
    
    var child2 = App.Child.createRecord({
    name: "Test2"
    });
    
    /*var newChildrenArray = [];
    newChildrenArray.pushObject(child1);
    newChildrenArray.pushObject(child2);*/
    
    var parent = App.Parent.createRecord({
    name: "Hello :-)"
    });    
    
    parent.get('children').pushObject(child1);
    parent.get('children').pushObject(child2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2021-04-18
      相关资源
      最近更新 更多