ember 中模型中每个项目的 ArrayController 属性

ArrayController's property for each item in the model in ember

我有一个数组控制器,它有 属性 "isChecked"(布尔值 属性)。在我的控制器中,我想获取 "checked" 的元素集合(我的意思是 selected)。我不确定如何在模型中访问控制器的 属性。

我的控制器如下:

App.ExampleController = Ember.ArrayController.extend({
    isChecked: false,
    totalElements: function()
    {
        return this.model.get('length');
    }.property('@each'),
    selectedElements: function()
    {
        var content = this.get('content');
        console.log(content.filterBy('isChecked'));
        return content.filterBy('isChecked');
    }.property('isChecked'),
});

我将 "isChecked" 属性 链接到每个助手内部的复选框,如下所示..

<ul>
   {{#each model}}
        <li>
            {{input type="checkbox" checked=isChecked}}
            {{name}}
        </li>
    {{/each}}
</ul>

我将显示模型中的所有项目,并带有与之关联的复选框。用户可以从中 select 几项。所以我想要那些东西。

现在我想获取 "checked" 的元素列表。作为计算 属性 或在任何操作下。

谢谢。

我认为您需要将 isChecked 属性 移到 ObjectController 上,然后使用 itemController 属性 在阵列控制器中引用该控制器.

阵列控制器:

App.IndexController = Ember.ArrayController.extend({
  itemController: 'color',

  totalElements: function() {
    return this.get('length');
  }.property('[]'),

  selectedElements: Ember.computed.filterBy('@this', 'isChecked', true)
});

@this 表示计算的 属性 将引用项目控制器数组。)

物品控制器:

App.ColorController = Ember.ObjectController.extend({
  isChecked: false
});

http://emberjs.jsbin.com/tazojejuwi/1/edit

希望对您有所帮助。