为什么选择一个复选框在ember中选择全部?

时间:2014-05-13 23:16:53

标签: ember.js

任何人都可以告诉我为什么选中一个复选框时会选中所有复选框?

我想获取所选复选框的ID。

http://emberjs.jsbin.com/poqabavi/2/edit

谢谢

2 个答案:

答案 0 :(得分:3)

我相信这是因为一旦您第一次点击复选框,isChecked就会变为true,它会更新依赖于该变量的每个复选框。

解决此问题的一种方法是在公司模型上设置isChecked属性:

App.Company = DS.Model.extend({
  name: DS.attr('string'),
  people: DS.hasMany('person', {async: true}),
  isChecked: false
});

您的复选框代码为{{input type="checkbox" checked=company.isChecked}}

然后,您可以通过迭代内容轻松获取哪些内容。

Here是我的建议更新的JSbin:

答案 1 :(得分:2)

在您的应用程序的当前状态中,所有复选框都引用相同的变量IndexController.get('isChecked')IndexController.set('isChecked', value)。如果您将该变量的范围从控制器更改为单个Company模型,它将按预期工作。

<td> {{input type="checkbox" checked=company.isChecked}}</td>

更改后,您可以使用var companies = this.content.filterBy('isChecked')中的IndexController来获取已在表单中检查过的公司。