html
<table class="fasong-box">
<colgroup>
<col width="20%" v-if="is.active == '0'">
<col width="25%">
<col width="25%">
</colgroup>
<thead>
<tr>
<td v-if="is.active == '0'">
<input :checked="is.checked" type="checkbox" @click="quanxuan" />
</td>
<td>
姓名
</td>
<td>
部门
</td>
</tr>
</thead>
<tbody>
<tr v-for="i in chayue">
<td v-if="is.active == '0'">
<input :checked="i.check" type="checkbox" @click="xz(i)" />
</td>
<td>
{{i.name}}
</td>
<td>
{{i.orgDept}}
</td>
</tr>
</tbody>
</table>
变量
is: {
checked:false
},
dingList:[]
执行js
xz:function(item){
item.check = !item.check
this.xinzeng(item)
this.quan()
},
quanxuan:function(){
var list = JSON.parse(JSON.stringify(this.chayue))
if(this.is.checked){
for(var r in list){
list[r].check = false
this.xinzeng(list[r])
}
}else{
for(var i in list){
list[i].check = true
this.xinzeng(list[i])
}
}
this.chayue = list;
this.quan()
},
xinzeng:function(item){
var boo = false,sc = false,num = 0
if(this.dingList.length){
for(var i in this.dingList){
d = this.dingList[i]
if(item.check){
if(d.id == item.id){
boo = true
}
}else{
if(d.id == item.id){
sc = true
num = i
}
}
}
if(sc){
this.dingList.splice(num,1)
}else{
if(!boo){
this.dingList.push(item)
}
}
}else{
if(item.check){
this.dingList.push(item)
}
}
},
quan:function(){
var boo=false
if(this.chayue.length){
for(var i in this.chayue){
var d = this.chayue[i]
if(!d.check){
boo = true
}
}
}
if(boo){
this.is.checked = false
}else{
this.is.checked=true
}
},
getList的时候执行
self.is.checked = false;
for(var i in self.chayue){
self.chayue[i].check = false
}
原理是:
拿到list的时候把全选与单个选项设置成不选中。
每次单选的时候检测是否全选。全选的概念为当前list的check全部为true。
把单选的item增加到特定的变量
全选的时候与上面思路相同。