0

每当更改sortingPropertiesmyArrayController中的 时,始终为所有记录重置选定的复选框。有没有办法保持特定记录的状态?我试图在我的关键字模板中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}}

更新:jsFiddle 示例

http://jsfiddle.net/rxgx/pJUuc/

4

2 回答 2

1

随着您的代码的一些更改,现在一切顺利。

我将每个块更改为使用排列内容和部分帮助器,它使用实际上下文呈现模板......

{{#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/

于 2013-10-18T14:54:27.260 回答
0

你有一个关键字控制器,它是一个 ArrayController。当您调用 render 时,会为每个关键字创建一个 ObjectController。将状态放在 KeywordController 中,这样状态的范围就限定为单个关键字而不是集合。

于 2013-10-17T15:30:40.530 回答