vue实现单选多选全选全不选功能

单选
当用v-for渲染一组数据的时候,可以带上index来区分他们,这里利用这个index来简单地实现单选

<ul class="user-content" v-for="(list,index) in translist" :class="{bgcolor:index == checkid}" @click="checktrans(index)">
 </ul>

根据点击的index,添加class属性:bgcolor

data() {
     return {
     	checkid:''
     }
 }
 methods:{
      checktrans(index){
          this.cleckid=index;
      },
 }

多选
多选的原理和单选一样,只不过这次要维护的是一个数组,不是单个的checkid

<ul class="toast-content" v-for="(list,index) in translist" :class="transArr.includes(index)?'bgcolor':''" @click="Listchoose(index)">
</ul>
data() {
    return {
       transArr: [],
    }
}

点击一次push一次index到transArr[]中,如果这个transArr[]中有这个index了那就不要它了,实现了点一次选中再点一次取消。

methods:{
   	Listchoose(i){
         var idx = this.transArr.indexOf(i);
         if(idx>-1){
             this.transArr.splice(idx,1);
         }else{
             this.transArr.push(i);
         }
     },
}

全选

<p @click="checkAll()">全选</p>
methods:{
   //全选
   checkAll(){
        var len = this.translist.length;
        this.transArr = [];
        for(var i=0;i<len;i++){
            this.transArr.push(i);
        }
    },
}

经常遇到一个按钮控制全选/全不选,下面在全选的基础上附上 全选/全不选 代码
全选/取消全选

<p @click="choosecheck()">{{isCheckAll?'清空':'全选'}}</p>
methods:{
//全选/取消全选转换
   choosecheck(){
       if(this.isCheckAll){
           this.clearCheckbox();
       }else{
           this.checkAll()
       }
   },
   //全选
   checkAll(){
        var len = this.translist.length;
        this.transArr = [];
        for(var i=0;i<len;i++){
            this.transArr.push(i);
        }
    },
    //取消全选
    clearCheckbox(){
        this.transArr = [];
    },
}
computed: {
     isCheckAll(){
         if(this.transArr.length==this.translist.length){
             return true;
         }
             return false;
     },
 }
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值