vuejs完成全选功用

全选功用

开辟申明

  1. 项目运用 vuejs 完成
  2. 项目供应两种体式格局完成全选功用,并附上源码,共参考

体式格局一

体式格局一,完整发挥了 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数据状况后滞后。

    原文作者:心语花束
    原文地址: https://segmentfault.com/a/1190000014253708
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞