全选功用
开辟申明
- 项目运用 vuejs 完成
- 项目供应两种体式格局完成全选功用,并附上源码,共参考
体式格局一
体式格局一,完整发挥了 vuejs 的特征,运用了 computed 完成了对 单选按钮的及时监控。
<div id="app">
<div class="box">
<div class="title">
<label><input type="checkbox" v-model="status">全选</label>
</div>
<ul>
<li v-for="item,index of list"><label>
<input type="checkbox" v-model="item.checked">{{item.title}}</label>
</li>
</ul>
</div>
</div>
var list = [
{
title : '数据一',
checked : false,
},{
title : '数据二',
checked : true,
},{
title : '数据三',
checked : true,
},{
title : '数据四',
checked : true,
},{
title : '数据五',
checked : true,
}];
var vm = new Vue({
el : '#app',
data:{
list
},
computed:{
status:{
get(){
return this.list.filter( item => item.checked ).length === this.list.length
},
set( value ){
this.list.map(function( item ){
item.checked = value;
return item;
});
}
}
}
});
体式格局二
体式格局二运用一般的事宜监听体式格局处置惩罚数据状况
<div id="app">
<div class="box">
<div class="title"><label>
<input type="checkbox"
v-model="status"
@change="allCheck">全选</label></div>
<ul>
<li v-for="item,index of list">
<label><input type="checkbox"
v-model="item.checked"
@change="singleCheck">{{item.title}}</label></li>
</ul>
</div>
</div>
var list = [
{
title : '数据一',
checked : false,
},{
title : '数据二',
checked : true,
},{
title : '数据三',
checked : true,
},{
title : '数据四',
checked : true,
},{
title : '数据五',
checked : true,
}];
var vm = new Vue({
el : '#app',
data : {
list,
status : this.list.filter( item => item.checked ).length === this.list.length ? true : false
},
methods : {
allCheck(){
this.list.map(function( item ){
item.checked = this.status;
return item;
}.bind(this));
},
singleCheck(){
this.status = this.list.filter( item => item.checked ).length === this.list.length ? true : false
}
}
});
申明在体式格局二中运用了事宜监听函数,运用了change,也能够运用 click,运用click事宜时,低版本的vuejs存在 bug,高版本中 bug 修复,bug 存在于,在双向绑定状况转变时 运用click数据状况后滞后。