Javascript 当我从模型中的数组字段添加或删除对象时,Ember不更新模板

Javascript 当我从模型中的数组字段添加或删除对象时,Ember不更新模板,javascript,arrays,ember.js,Javascript,Arrays,Ember.js,我有一个模型,它有一个数组对象的字段,看起来像这样 App.Post = DS.Model.extend({ ... codes: attr(), ... }); and Codes looks like this codes: [ { code: stuff comment: stuff_1 other_things: other_stuff }, { ... }, { ... } ... ] 现在我有了一个添加/删除

我有一个模型,它有一个数组对象的字段,看起来像这样

App.Post = DS.Model.extend({
    ...
    codes: attr(),  
    ...
});

and Codes looks like this 

codes: [
{
    code: stuff
    comment: stuff_1
    other_things: other_stuff
},
{
    ...
},
{
    ...
}
...
]
现在我有了一个添加/删除按钮,上面有附加的操作,这就是它们所做的

add_code_input: function() {
        var codes = this.get('model.codes');
        var self = this;
        var last_code = codes[codes.length-1];

        // Cannot edit as an ember.set error is occurring
        last_code.code = 'Add new (please change)';
        last_code.code_type = "";
        last_code.comment = "";

        console.log(last_code);

        codes.push(last_code);

        this.set('model.codes', codes);


        console.log(codes);
},
remove_code_input: function() {
    var codes = this.get('model.codes');
    codes.pop();
    console.log(codes);
    this.set('model.codes', codes);
}
因此,删除可以正常工作,但添加不起作用

当我尝试更新
last\u code
:未捕获错误:断言失败:您必须使用Ember.set()访问此属性(属于[object object])

我本质上想添加一个用户可以更改的虚拟对象


因此,第一个问题是如何正确地将虚拟对象添加到数组中,第二个问题是如何在模型更改时更新模板

您应该使用
arr.pushObject(obj)
arr.popObject()
来操作Ember中的数组(将其视为数组的setter/getter)

代码实际上只是
attr()
,因为它看起来像DS记录

如果它是一条记录,您只需使用
record.set('foo','bar')
如果它只是一条POJO,您可以使用
Ember.set(obj,'foo','bar')

它应该像这样简单(我假设您在这里使用和)


在kingpin2k提供的解决方案的基础上,这里有一个jsbin来帮助您,我们不必在执行get之后执行set?此外,ember不会显示模型已修改,即使它应该修改。
var newCode = {
  code:'foo'
};
this.get('codes').pushObject(newCode);