每当更改sortingProperties
中的ArrayController
时,所有记录都会重置所选复选框。有没有办法坚持特定记录的状态?我试图在我的关键字模板中将controller
替换为content
和arrangedContent
。
{{view Ember.Checkbox
class="keyword-checkbox"
idBinding="checkboxId"
name="id[]"
disabledBinding="isCheckboxDisabled"
checkedBinding="isKeywordSelected"
valueBinding="id" }}
App.KeywordController = Ember.ObjectController.extend(Ember.Evented, {
...
isKeywordSelected: false
...
});
App.KeywordsController = Ember.ArrayController.extend(Ember.Evented, {
sortAscending: true,
sortProperties: ['name'],
init: function() {
this.set('content', this.store.find('keyword', { domain_id: 1 });
}
});
{{#each keyword in controller}}
{{render "keyword" keyword}}
{{/each}}
答案 0 :(得分:1)
如果您的代码发生了一些变化,那么现在进展顺利。
我更改了每个块以使用arrangeContent和部分帮助器,它使用实际上下文呈现模板...
{{#each arrangedContent}}
{{partial keyword}}
{{/each}}
同样在关键字控制器中,我添加了一个itemController属性来为项目的控制器提供帮助,在init方法中,我添加了对this._super()的调用,以调用控制器的ember初始化代码。
App.KeywordsController = Ember.ArrayController.extend({
itemController:'keyword',
selectedKeywords: function() {
return this.get('content').filterBy('isSelected', true).get('length');
}.property('content.@each.isSelected'),
sortAscending: true,
sortProperties: ['name'],
actions: {
sort: function(property) {console.log(property);
this.set('sortProperties', [property]);
}
},
init: function() {
this.set('content', keywords);
this._super();
}
});
Jsfiddle http://jsfiddle.net/pJUuc/6/
答案 1 :(得分:0)
你有一个关键字控制器,它是一个ArrayController。调用render时,会为每个关键字创建一个ObjectController。将状态放在KeywordController中,使得状态的范围限定为单个关键字而不是集合。