当我从模型中的数组字段中添加或删除对象时,Ember不更新模板
Ember not updating template when I add or remove an object from an array field in the model
我得到了一个包含数组对象字段的模型它看起来是这样的
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_code
时,它给了我这个错误:Uncaught Error: Assertion Failed: You must use Ember.set() to access this property (of [object Object])
我想添加一个用户可以修改的虚拟对象。
所以第一个问题是弄清楚如何正确地将虚拟对象添加到数组中,其次如何随着模型的变化而更新模板。
您应该使用arr.pushObject(obj)
和arr.popObject()
来操作Ember中的数组(将其视为数组的setter/getter)。
是代码实际上只是attr()
,因为它看起来像一个DS记录。
如果它是一个记录,你可以使用record.set('foo', 'bar')
;如果它只是一个POJO,你可以使用Ember.set(obj, 'foo', 'bar')
。
它应该像这样简单(我假设你在这里使用和ObjectController)
var newCode = {
code:'foo'
};
this.get('codes').pushObject(newCode);
相关文章:
- 将ember对象的数组从ember组件传递到模板
- Ember.js(2.5.0)如何设置嵌套对象值
- 带有普通对象的Ember.js查找不起作用
- 无法观察Ember.js中的对象数组
- 通过当前路由器's模型转换为Ember.js中创建的对象
- 在模板中的Ember.js对象上发出迭代
- 对象在Ember.js中保存时从视图中消失
- 在ember.js中保存对象时出错:'对象X没有方法'保存''
- 如何获取 Ember 组件对象内部承诺成功或错误回调
- 如何仅按某些对象填充 Ember.js 的选择
- Ember.js:通过原型和元动态更改 Ember 对象的“类”
- 以天为单位的 2 个 ember 日期时间对象之间的差异
- Ember 对象函数定义中的计算属性.js
- 未捕获的类型错误:对象 #<对象> 没有方法“重新打开”(Ember.js)
- Ember js 遍历对象的 json 数组以创建元素
- 将本机数组/对象转换为 Ember.Array/Ember.Object 的最佳实践
- 通过获取 JSON 对象并将其推送到存储中来提供 Ember.js 模板
- 在 Ember.js 中,如何使用 super() 遍历对象继承树
- Ember 表格形式,其中行具有对象,列具有属性名称
- 使用 Ember 动态添加和推送其他对象