利用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 相关文章推荐
jquery tools 系列 scrollable(2)
Sep 06 Javascript
JavaScript二维数组实现的省市联动菜单
May 08 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
Aug 18 Javascript
JavaScript中的变量作用域介绍
Dec 31 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
vue如何使用 Slot 分发内容实例详解
Sep 05 Javascript
详解webpack2异步加载套路
Sep 14 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
Jan 08 Javascript
vue实现拖拽的简单案例 不超出可视区域
Jul 25 Javascript
node.js中 redis 的安装和基本操作示例
Feb 10 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下MYSQL limit的优化
2008/01/10 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
python 实现归并排序算法
2012/06/05 Python
python if not in 多条件判断代码
2016/09/21 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
学生打架检讨书大全
2014/01/23 职场文书
员工表扬信怎么写
2015/05/05 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
详解Nginx 工作原理
2021/03/31 Servers
mongodb清除连接和日志的正确方法分享
2021/09/15 MongoDB