ember js获得多个复选框值

时间:2016-08-31 19:36:16

标签: javascript ember.js

我的模板:

<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?

1 个答案:

答案 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')

我希望这有用!