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 相关文章推荐
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
Aug 15 Javascript
避免 showModalDialog 弹出新窗体的原因分析
May 31 Javascript
不要在cookie中使用特殊字符的原因分析
Jul 13 Javascript
js数组方法扩展实现数组统计函数
Apr 09 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
May 23 Javascript
深入理解javascript构造函数和原型对象
Sep 23 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
Apr 25 Javascript
学习Angular中作用域需要注意的坑
Aug 17 Javascript
基于zepto.js实现手机相册功能
Jul 11 Javascript
Vue extend的基本用法(实例详解)
Dec 09 Javascript
js实现弹窗猜数字游戏
Nov 26 Javascript
Vue实现小购物车功能
Dec 21 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
WordPress中is_singular()函数简介
2015/02/05 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
PHP会话处理的10个函数
2015/08/11 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
pyv8学习python和javascript变量进行交互
2013/12/04 Python
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
2017/06/15 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
Python生成词云的实现代码
2020/01/14 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
加拿大探亲邀请信
2014/01/28 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers