gpt4 book ai didi

ember.js - 将对象推送到父级有很多关系

转载 作者:行者123 更新时间:2023-12-04 17:49:32 25 4
gpt4 key购买 nike

当尝试将新创建的对象推送到具有许多关系的父对象时,我运行出错:

Assertion failed: The content property of DS.PromiseArray should be set before modifying it

这是我的代码。
    App.User = DS.Model.extend({
name : DS.attr('string'),
selections : DS.hasMany('selection', {async: true}),
creationDate : DS.attr('date')
});

App.Selection = DS.Model.extend({
value : DS.attr('string')
});

App.PollController = Ember.ObjectController.extend({
actions: {
save: function(){
// create new user record in store
var newUser = this.store.createRecord('user', {
name : this.get('newUserName'),
creationDate : new Date()
});

// create new selection record in store
var newSelection = this.store.createRecord('selection', {
id : 11,
value : "hallo"
});

// push selection to user
newUser.get('selections').pushObject(newSelection);

// save new user
newUser.save();
}
}
});

当我尝试将 newSelection 对象推送到用户模型的 selections 数组时出错。

还尝试将行更改为
                // push selection to user
newUser.get('selections').then(function(selections){
selections.pushObject(newSelection);
});

然后我没有收到错误,但没有将 newSelection 推送给用户。用户的选择数组保持为空。

我做错了什么?我是完全错误的方式吗?或者 EmberJs/Ember Data 中是否存在错误?

我正在使用 EmberJS 1.2.0 和 Ember Data beta 5。

最佳答案

我假设您是说保存不会发回选择,因为您的添加代码是正确的。

需要注意的是,promise 是异步发生的

            newUser.get('selections').then(function(selections){
// this will happen after save
selections.pushObject(newSelection);
});

newUser.save();

您应该等待保存,直到选择被推送

http://emberjs.jsbin.com/gotasa/1/edit?html,js,output
            newUser.get('selections').then(function(selections){
selections.pushObject(newSelection);
newUser.save();
});

关于ember.js - 将对象推送到父级有很多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20961354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com