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 相关文章推荐
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
May 14 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
Apr 12 Javascript
JS根据年月获得当月天数的实现代码
Jul 03 Javascript
JS表的模拟方法
Feb 05 Javascript
iframe里使用JavaScript控制主页转向的方法
Apr 03 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
Jul 14 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
Nov 08 Javascript
layui弹出框Tab选项卡的示例代码
Sep 04 Javascript
layui使用表格渲染获取行数据的例子
Sep 13 Javascript
vue循环中点击选中再点击取消(单选)的实现
Sep 10 Javascript
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不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
JavaScript 学习点滴记录
2009/04/24 Javascript
JavaSript中变量的作用域闭包的深入理解
2014/05/12 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
js canvas实现二维码和图片合成的海报
2020/11/19 Javascript
vue-router 中 meta的用法详解
2019/11/01 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
python如何通过实例方法名字调用方法
2018/03/21 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
2013/01/26 面试题
电子商务网站的创业计划书
2014/01/05 职场文书
医学生个人求职信范文
2014/02/07 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
2014年营业员工作总结
2014/11/18 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android