Ember Data-以hasMany关系创建记录

时间:2013-09-20 12:48:08

标签: javascript ember.js ember-data

我正在使用Ember Data beta2,我设置了hasMany关系。

创建子记录时,我是否必须在父对应的属性上使用pushObject?

在查看文档时,我得到的印象是我需要正确设置记录的父属性并保存它。

我就是这样做的:

    addPlugin: function() {
        //get the value
        var title = this.get('newPluginName');
        if (!title.trim()) { return; }

        var plugin = {
            name: title,
            category: this.get('model'),
            url: ''
        };
        var plugin = this.store.createRecord('plugin', plugin);
        plugin.save();

        //clear the text field
        this.set('newPluginName', '');
        $("#new-plugin").blur();
    }

我在Chrome中的Ember检查器中看到了新创建的记录,它没有脏,但它在父列表中不存在,刷新后它就消失了。

1 个答案:

答案 0 :(得分:8)

对我有用的是:

var child = this.get('store').createRecord('child', {
   name: 'New Child',
   parent: parent
};
child.save();

parent.get('children').addObject(child);
// My backend automatically adds the inverse of relationships when saving     
// the child, so I don't need to save the parent separately

我不知道addPlugin属于什么,但如果你是从ChildrenArrayController创建孩子,你可能想要包括

needs: ['parent']

在您的控制器中。在创建子项并将其添加到父项之前,您需要调用:

var parent = this.get('controllers.parent');