【发布时间】:2015-05-27 11:01:45
【问题描述】:
我有一个具有“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>
我将显示模型中的所有项目,并带有一个与之关联的复选框。用户可以从中选择几个项目。所以我想要那些东西。
现在我想获取“已检查”的元素列表。作为计算属性或在任何操作下。
谢谢。
【问题讨论】:
-
你能分享一下你的模型结构吗?
-
我的模型只有几个属性。我只是从网上获取它并直接从路线返回。我的意思是我不把它保存在商店里。
-
是否像 [{name:'A', isChecked:true},{name:'B', isChecked:false}] ?而您只想将带有 isChecked 属性的复选框列表显示为 true?
-
No no.. 该模型根本不包含“isChecked”属性。我将显示所有项目。从中,用户可以“检查”一些项目。我想要那些物品。我编辑了这个问题。也许它现在会给你一个清晰的画面
-
如果您没有每个选择的 isChecked 属性,那么您必须创建。然后使用observes('@each.isChecked'),只要你的isChecked属性发生变化就会触发。现在要获取所选选项的列表,您可以像现在一样创建一个计算属性,只需 filterBy。但主要的是您需要每个复选框的 isChecked 属性。你这样做的方式是错误的(即对所有人都有一个 isChecked 属性)
标签: ember.js nsarraycontroller computed-properties