1

我正在使用 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 检查器中看到新创建的记录,它并不脏,但它不存在于父列表中,并且在我刷新后它消失了。

4

1 回答 1

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');
于 2013-09-20T18:18:39.473 回答