在Ember Data中分配hasMany关系

时间:2012-09-24 15:43:32

标签: ember.js ember-data

我正试图了解Ember Data模型并试图将使用store.findAll()找到的对象集合分配给ember数据模型的hasMany关系时遇到问题。

我定义了两个模型:

App.Leaf = DS.Model.extend({
    text: DS.attr('string'),
    branch: DS.belongsTo('App.Branch')
});

App.Branch = DS.Model.extend({
    lotsOfLeaves: DS.hasMany('App.Leaf')
});

如果我将关系指定为createRecord()

的一部分
    App.store.loadMany(App.Leaf,[
        { id: 1, text: "Hello, I'm leaf 1", branch_id: 1 },
        { id: 2, text: "Hello, I'm leaf 2", branch_id: 1 }
    ]);
    var allLeaves = App.store.findAll(App.Leaf);
    var oneBranch = App.Branch.createRecord({ id: 1, lotsOfLeaves: allLeaves });

然后它失败(默默地),因为oneBranch.get('lotsOfLeaves.length')0

同样,如果我在关联后分配关系,它会无声地失败:

    var all = App.store.findAll(App.Leaf);
    oneBranch.set('lotsOfLeaves', all);

我了解我可以pushObject()使用oneBranch.get('lotsOfLeaves')来单独添加每个叶子,但这是唯一的方法吗?

1 个答案:

答案 0 :(得分:4)

MutableArray类还定义了一个pushObjects()方法,您应该可以使用它同时添加所有这些方法。

文档在这里:http://docs.emberjs.com/symbols/Ember.MutableArray.html#method=pushObjects