利用Vue.js实现checkbox的全选反选效果


Posted in Javascript onJanuary 18, 2017

前言

这篇文章主要是跟大家分享了利用Vue.js实现checkbox的全选反选效果,之前写的代码存在一个bug,就是当你选择全选的时候去掉后面的一个选项,再点全选结果就是反的了。后来很感谢朋友留言帮我改了这个问题嘻嘻,下面一起来看看具体是怎么实现的吧.

html示例代码

<template>
 <div>
 <input type='checkbox' class='input-checkbox' v-model='checked' v-on:click='checkedAll'>全选
 <template v-for='checkb in checkboxData'>
 <input type='checkbox' name='checkboxinput' class='input-checkbox' v-model='checkboxModel' value='{{checkb.id}}'>{{checkb.value}}
 </template>
 </div>
</template>

js示例代码

<script>
export default {
methods:{
 checkedAll: function() {
 var _this = this;
 console.log(_this.checkboxModel);
 if (this.checked) {//实现反选
 _this.checkboxModel = [];
 }else{//实现全选
 _this.checkboxModel = [];
 _this.checkboxData.forEach(function(item) {
 _this.checkboxModel.push(item.id);
 });
 }
 }
},
watch: {//深度 watcher
 'checkboxModel': {
 handler: function (val, oldVal) { 
 if (this.checkboxModel.length === this.checkboxData.length) {
 this.checked=true;
 }else{
 this.checked=false;
 }
 },
 deep: true
 }
},
data () {
 return {
 checkboxData:[{
 id:'1',
 value:'苹果'
 },{
 id:'2',
 value:'荔枝'
 },{
 id:'3',
 value:'香蕉'
 },{
 id:'4',
 value:'火龙果'
 }],
 checkboxModel:['1','3','4'],
 checked:""
 }
}
}
</script>

watch

类型: Object

详细:

一个对象,键是观察表达式,值是对应回调。值也可以是方法名,或者是对象,包含选项。在实例化时为每个键调用 $watch()

示例:

var vm = new Vue({
 data: {
 a: 1
 },
 watch: {
 'a': function (val, oldVal) {
 console.log('new: %s, old: %s', val, oldVal)
 },
 // 方法名
 'b': 'someMethod',
 // 深度 watcher
 'c': {
 handler: function (val, oldVal) { /* ... */ },
 deep: true
 }
 }
})
vm.a = 2 // -> new: 2, old: 1

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
javascript 清空form表单中某种元素的值
Dec 26 Javascript
jquery拖动插件(jquery.drag)使用介绍
Jun 18 Javascript
javascript实现点击提交按钮后显示loading的方法
Jul 03 Javascript
js运动应用实例解析
Dec 28 Javascript
第五篇Bootstrap 排版
Jun 21 Javascript
js简单实现图片延迟加载的方法
Jul 19 Javascript
Ztree新增角色和编辑角色回显问题的解决
Oct 25 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
Aug 27 Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 Javascript
微信小程序开发问题之wx.previewImage
Dec 25 Javascript
详解如何在Javascript和Sass之间共享变量
Nov 13 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
Feb 07 Javascript
微信小程序的动画效果详解
Jan 18 #Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
Jan 18 #Javascript
bootstrap配合Masonry插件实现瀑布式布局
Jan 18 #Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 #Javascript
Vue.js自定义指令的用法与实例解析
Jan 18 #Javascript
vue.js+Element实现表格里的增删改查
Jan 18 #Javascript
JS中Array数组学习总结
Jan 18 #Javascript
You might like
php URL跳转代码 减少外链
2011/06/25 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
Google Map Api和GOOGLE Search Api整合实现代码
2009/07/18 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
原生js实现form表单序列化的方法
2018/08/02 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
JS typeof fn === 'function' &amp;&amp; fn()详解
2020/08/22 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
python3 字符串知识点学习笔记
2020/02/08 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
python中def是做什么的
2020/06/10 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
公司营业员的工作总结自我评价
2013/10/05 职场文书
水务局局长岗位职责
2013/11/28 职场文书
美容院考勤制度
2014/01/30 职场文书
师范生求职自荐信
2014/06/14 职场文书
2014离婚协议书范文
2014/09/10 职场文书
志愿者个人总结
2015/03/03 职场文书
法院答辩状格式
2015/05/22 职场文书
民主生活会主持词
2015/07/01 职场文书
PHP实现两种排课方式
2021/06/26 PHP