为了账号安全,请及时绑定邮箱和手机立即绑定

vue2.0 实现全选和全不选

标签:
JavaScript

实现思路:

1、 v-model 一个收集所有input(除全选框外)数组checkModel ,vue会动态将其checked为true的input的value值存入数组checkModel里

2 、watch函数来监听checkModel 属性,当其长度==input元素时 全选按钮选中 否则取消

3 、全选按钮v-model checked 属性来显示当前选中状态 click事件里 当checked为true时 全选 所有input按钮被选中也就是checkModel的遍历存入其value值

html代码:

<div>  
<input type="checkbox" @click="checkAll" v-model="checked">  
<span>全选</span></div><ul>  
<li v-for="(item,index) in list" :key="index" style="margin-top:20px;">    
<input type="checkbox" v-model="checkModel" :value="item.id">    
<span>{{item.name}}--</span>    
<span>{{item.age}}--</span>    
<span>{{item.money}}元</span>    
<mt-button @click="remove(index)" type="primary">删除</mt-button>  
</li>
</ul>

js代码:

data(){
  return {
    list:[
      {id:1,name:"明明",age:23,money:100},
      {id:2,name:"红红",age:18,money:200},
      {id:3,name:"强强",age:29,money:300}
    ],
    checked:false, //是否全选    checkModel:[] //双向数据绑定的数组,我是用的id  }
},watch:{
  checkModel(){
    if(this.checkModel.length==this.list.length){
      this.checked=true;
    }else{
      this.checked=false;
    }
  }
},methods:{  
  checkAll(){
    if(this.checked){
      this.checkModel=[];
    }else{
      this.list.forEach((item)=>{
      if(this.checkModel.indexOf(item.id)==-1){
        this.checkModel.push(item.id)
      }
      })
    }
  }
}

效果如图:

Alt

注:删除效果我用的是element-ui,有兴趣的朋友可以研究下

作者:smile_or

原文链接:https://www.cnblogs.com/sgs123/p/10436516.html


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消