我的模板:
<form name="spam_list" {{action 'spamDecide' on='submit'}}>
{{#each model as |spam|}}
<tr>
<td>{{input type="checkbox" name="trash[]" checked=spam.isCheck}}</td>
</tr>
{{/each}}
<button {{action 'checkAll'}}>Check All</button>
</form>
我的路线:
model(){
// return 10 spams
},
我的控制器:
actions:{
spamDecide: function(model){
var isCheck = model.getEach('isCheck');
console.log(isCheck);
},
checkAll: function(model){
var model = this.get('model');
model.setEach('isCheck',true);
},
}
目前操作checkAll工作正常,将所有复选框设置为选中状态。我的问题是,当我手动检查时,我怎么知道检查了哪个复选框 例如,我设置了复选框1 5 7,然后在每次检查时获得等效的spam.id?
答案 0 :(得分:2)
如果我读得正确,您要查找的是spamDecide
中的已检查对象列表。您应该能够按照以下方式进行:
actions:{
spamDecide: function(model){
var checkedModels = model.filterBy('isCheck');
console.log(checkedModels);
},
}
当Array#getEach
(alias for Array#mapEach
)返回每个项目的isCheck
属性的数组时,filterBy
会返回将isCheck
属性设置为true的项目。
如果您想要ID,则可以checkedModels.mapBy('id')
。
我希望这有用!