我有一个Todo-App,现在我想在每个任务后添加一个复选框列表。
当我单击一个复选框时,更改了正确的数组项,但它未在模板中更新。此外,即使创建时的值设置为false,也始终填充复选框。
我在DS.Model中为DS.Transform创建了一个数组属性。
Todos.Todo = DS.Model.extend({
title: DS.attr('string'),
quarters: DS.attr('array')
});
模板:
{{#each item in quarters}}
<input type="checkbox" checked=item {{action "checkIndex" _view.contentIndex on="click"}}>
{{/each}}
_
Todos.TodoController = Ember.ObjectController.extend({
actions: {
checkIndex: function (index) {
var quarters = this.get('model.quarters');
var value = quarters[index];
value = value ? false : true;
var strIndex = '' + index;
quarters.set(strIndex, value);
console.log(this.get('model.quarters')[index]); // --> returns updated value
this.get('model').save();
}
....
似乎我无法迭代数组属性并在保持更新的同时分别呈现每个项目。我搜索了很多解决方案,但仍然没有弄清楚。或者有更好的方法吗?
迭代数组 - &gt;项目未在模板中更新:
{{#each item in quarters}}
{{item}}
{{/each}}
数组 - &gt; get在模板中更新:
{{quarters}}
JsFiddle:http://jsfiddle.net/Ld7gf/5/