vue使用监听实现全选反选功能


Posted in Javascript onJuly 06, 2018

最近在学习vue这一块的内容,在项目中用到了全选全不选的功能,开始的时候借鉴了别人写的功能,但感觉写的有一些缺陷,然后就自己写了一套,如有写的不好的地方,请各位大佬指教,废话不多说,上代码。

首先定义数据

data: {
   /*全选、全不选*/
   allCheck:false,//全选功能
   //循环数据
   checkArr:[
     {cityName:"东城区",isCheck:false},
     {cityName:"西城区",isCheck:false},
     {cityName:"朝阳区",isCheck:false},
     {cityName:"丰台区",isCheck:false},
   ],
}

然后是页面代码:

<div>
   <div v-for="carType in checkArr">
     <p>
       <input type="checkbox" v-model="carType.isCheck"/>
       <a href="javascript:void(0)" rel="external nofollow" >{{carType.typeName}}</a>
    </p>
   </div>
</div>
<div>
  <input type="checkbox" id="chooseAllType" v-model="allCheck" @click="selectAll(allCheck)"/>
  全选
</div>

下面是js中代码

methods: {
  /*点击全选,选中所有复选框*/
  selectAll: function (data) {
    var _this = this;
    //如果父级被选中,那么子集循环,全被给checked=true
    if (!data) {
      _this.checkArr.forEach(function (item) {
        item.isCheck = true;
      });
    } else {
      //相反,如果没有被选中,子集应该全部checked=false
      _this.checkArr.forEach(function (item) {
        item.isCheck = false;
      });
    }
  },
}

下面是监听部分代码,主要功能为如果子集全部选中,全选按钮同样被勾选

watch:{
  /*监听全选事件*/
  checkArr:{
    handler(value){
      var _this = this;
      var count=0;
      for(var i=0;i<value.length;i++){
        if(value[i].isCheck==true){
          count++;
        }
      }
      //如果子集全部选中,全选按钮设置选中状态
      if(count==value.length){
        _this.allCheck=true;
      }else{
        _this.allCheck=false;
      }
    },
    deep:true
  },
}

总结

以上所述是小编给大家介绍的vue使用监听实现全选反选功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
Jun 26 Javascript
javascript数组的扩展实现代码集合
Jun 01 Javascript
javascript 文档的编码问题解决
Mar 01 Javascript
JQuery与Ajax常用代码实现对比
Oct 03 Javascript
Javascript load Page,load css,load js实现代码
Mar 31 Javascript
详解javascript数组去重问题
Nov 06 Javascript
jQuery新窗口打开外链接
Jul 21 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
Sep 01 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
Jun 05 Javascript
jquery tmpl模板(实例讲解)
Sep 02 jQuery
jQuery实现雪花飘落效果
Aug 02 jQuery
JavaScript枚举选择jquery插件代码实例
Nov 17 jQuery
vue 实现数字滚动增加效果的实例代码
Jul 06 #Javascript
详解在Vue中使用TypeScript的一些思考(实践)
Jul 06 #Javascript
javascript显示动态时间的方法汇总
Jul 06 #Javascript
Django+Vue跨域环境配置详解
Jul 06 #Javascript
微信小程序画布圆形进度条显示效果
Nov 17 #Javascript
微信小程序实时聊天WebSocket
Jul 05 #Javascript
vue v-model实现自定义样式多选与单选功能
Jul 05 #Javascript
You might like
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
PHP中的self关键字详解
2019/06/23 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
js Function类型
2011/12/04 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
Python中常见的数制转换有哪些
2020/05/27 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
大学军训感言600字
2014/02/25 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python
宝塔更新Python及Flask项目的部署
2022/04/11 Python