vue如何实现一个简单的全选、反选功能

介绍

全选、反选功能在项目中仍是很经常使用的,以下写了一个简单的全选、反选功能;javascript

全选效果

部分选择

反选

页面结构构建

根据本身的结构渲染页面(此代码仅为demo测试)java

<div id="app">
    <button @click="handleAll">全选</button>
    <button @click="handleReverse">反选</button>
    <ul>
        <li v-for="(item,index) in list" :key="index" :class="list1.includes(item) && 'atL'">
            <a href="javascript:;" @click="handleAdd(item)">{{item}}</a>
        </li>
    </ul>
</div>

功能实现

new Vue({
    el:"#app",
    data(){
        return{
            list:[1,2,3,4,5,6],
            list1:[],
        }
    },
    methods:{
        //手动选择
        handleAdd(val){
            let isHash = this.list1.findIndex(item=>val == item);
            if(isHash > -1){
                this.list1.splice(isHash,1);
            }else{
                this.list1.push(val);
            }
        },
        //所有选择
        handleAll(){
            this.list1 = JSON.parse(JSON.stringify(this.list));
        },
        //反向选择
        handleReverse(){
            let c = [];
            this.list.forEach(item=>{
                !this.list1.includes(item) && c.push(item)
            })
            this.list1 = c;
        }
    },
})

效果演示

https://codepen.io/voggen/pen...app

相关文章
相关标签/搜索