vue实现全选、反选功能


Posted in Javascript onNovember 17, 2020

用vue写业务代码时候,后端大神丢给我一堆数据,要求是做全选,反选功能,然后把用户更改的数据全部返回给他

基本思路

如果父级选中了,那么父级下面的子集全部选中checked=true;

如果子集中选中了一个,那么父级应该被勾选中

如果子集一个都没有选中,那么父级此时应该没有选中

最后提交用户改变后的数组

(大神原谅我的??鹿??/p>

开始上代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
 <title>Document</title>
 <link rel="stylesheet" href="css/role.css" rel="external nofollow" >
</head>
<body>
 <div id="content" v-cloak>
 <form @submit.prevent="submit">
  <div class="list" v-for="item in addList">
   <h3 class="title">
     <label for=""><input type='checkbox' class='item-check-btn' v-model="item.checked" @click="selectAll(item)"></label>
    {{item.name}}
   </h3>
    <ul class="menu">
     <li v-for="(s,index) in item.children">
      <label for="">
       <input type='checkbox' :value="index" v-model="s.checked" class='item-check-btn' @click="selectItem(item,s,index)">
      </label>
      {{s.name}}
     </li>
    </ul>
  </div>
  <div class="bottom_btn">
   <input type="submit" value="确认选择" class="btn">
  </div>
 </form>
 </div>

</body>
<script src="js/lib/vue.js"></script>
<script src="1.js"></script>
</html>

这是html结构部分

基本上没有啥好讲的

只能说一句(我曹,v-for和v-model,真他M的方便呀,哈哈哈哈?)

里面用到v-for嵌套v-for做数据渲染,看效果(效果看起来很low,大神不要在意)

vue实现全选、反选功能

下面开始上js代码了

new Vue({
 el: "#content",
 data: {
  addList: [
  {
  "name":"用户管理",
  "checked":true,
  "children":[
  {"name":"添加","checked":true},
  {"name":"删除","checked":false},
  {"name":"修改","checked":true}
  ]
  }
 ]
 },
 methods: {
  selectAll: function(item) {
   //如果父级被选中,那么子集循环,全被给checked=true
   if(item.checked){
     item.children.forEach(function(item){
      item.checked=true;
     });
   }else{
   //相反,如果没有被选中,子集应该全部checked=false
     item.children.forEach(function(item){
    item.checked=false;
  
    });
   }
  },
 selectItem: function(item,s,index) {
  //父级选中条件
  //子集有选中的,那么父级checked=true
  //some检测的就是有一个满足的就为true
  item.checked=s.checked ? true : item.children.some(a => a.checked);
  },
  submit: function(item,s) {
  //去拿所有的数据,返回给后台
  var formData=this.addList;
  console.log(JSON.stringify(formData));
 }
 }
 });

最后点击改变的结果

vue实现全选、反选功能

返回给后台就是this.addList,此时已经是改变的结果

在项目中,后台给我的json就是this.addList的样子

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

更多vue学习教程请阅读专题《vue实战教程》

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js css样式操作代码(批量操作)
Oct 09 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
Feb 12 Javascript
详解JS 比较两个Json对象的值是否相等的实例
Nov 20 Javascript
javascript设计简单的秒表计时器
Sep 05 Javascript
Input文本框随着输入内容多少自动延伸的实现
Feb 15 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
javascript自定义事件功能与用法实例分析
Nov 08 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
May 14 Javascript
vue $router和$route的区别详解
Dec 02 Vue.js
如何使用JavaScript策略模式校验表单
Apr 29 Javascript
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
vue中将网页打印成pdf实例代码
Jun 15 #Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
Jun 15 #Javascript
Angularjs为ng-click事件传递参数
Jun 15 #Javascript
详解原生js实现offset方法
Jun 15 #Javascript
微信小程序 监听手势滑动切换页面实例详解
Jun 15 #Javascript
微信小程序canvas写字板效果及实例
Jun 15 #Javascript
AngularJs实现聊天列表实时刷新功能
Jun 15 #Javascript
You might like
php 获得汉字拼音首字母的函数
2009/08/01 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
Laravel5.1 框架路由基础详解
2020/01/04 PHP
JavaScript关于select的相关操作说明
2010/01/13 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
python的pstuil模块使用方法总结
2019/07/26 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
关于递归的一道.NET面试题
2013/05/12 面试题
优秀学生评语大全
2014/04/25 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
六五普法宣传标语
2014/10/06 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android