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);