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

时间:2015-03-24 07:58:36

标签: ember.js nsarraycontroller computed-properties

我有一个Array控制器,其属性为“isChecked”(布尔属性)。在我的控制器中,我想获得“检查”的元素集合(我的意思是选中)。我不确定如何访问模型中的控制器属性。

我的控制器如下:

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>

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

enter image description here

现在我想获取“已检查”的元素列表。作为计算属性或在任何操作下。

谢谢。

1 个答案:

答案 0 :(得分:3)

我认为您需要将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

希望有所帮助。