vueJs新手處理表單全選有什麼好的建議么?

vueJs新手處理表單全選有什麼好的建議么?需要遍歷所有checkbox的value?


借用師兄的實現,供參考: Edit fiddle - JSFiddle

&
&

& & &#& &Name& &Age& & & & & &&全選{{allChecked}}& & &

&&& &{{item.name}}& &{{item.age}}& & & & &

//代碼
var _list = [{name:"小明",age:23, checked: true},{name:"小紅",age:20, checked: true},{name:"ddd",age:30, checked: true}];

new Vue({
el: ".app",
computed: {
allChecked: {
get: function(){
return this.checkedCount == this.list.length;
},
set: function(value){
this.list.forEach(function(item){
item.checked = value
})
return value;
}
},
checkedCount: {
get: function(){
var i = 0;
this.list.forEach(function(item){
if(item.checked == true) i++;
})
return i;
}
}
},
data:{
list: _list
}
});


我用的是指令

export default {
"check-all": {
twoWay: true,
params: ["checkData"],
bind() {
/**
* 如果所有的列表的checked屬性都為true,則選中全選框,否則不選中全選框
*/
this.vm.$watch(this.params.checkData, (checkData) =&> {
if (checkData.every((item) =&> item.checked)) {
this.set(true);
} else {
this.set(false);
}
}, { deep: true });
},
update(checkAll) {
/**
* 如果全選框被選中,則將列表的所有checked屬性轉為true,否則轉為false
*/
if (checkAll) {
this.vm[this.params.checkData].forEach((item) =&> {
item.checked = true;
});
} else {
this.vm[this.params.checkData].forEach((item) =&> {
item.checked = false;
});
}
},
},
};

調用:

&
& &

  • &
    {{item.text}}
    & &


    推薦閱讀:

    如何避免工作兩年重複一年工作經驗?
    如此多的前端框架是如何起名字的?

    TAG:前端開發 | JavaScript | Vuejs |