我的模板:
<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
},
我的 Controller :
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 ?
最佳答案
如果我没看错的话,您正在寻找的是在 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')
。
希望对您有帮助!
关于javascript - ember js获取多个复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39257677/