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 相关文章推荐
autoIMG 基于jquery的图片自适应插件代码
Mar 12 Javascript
提取jquery的ready()方法单独使用示例
Mar 25 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
Aug 24 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
Aug 28 Javascript
jQuery代码实现对话框右上角菜单带关闭×
May 03 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
Dec 02 Javascript
详解JS中遍历语法的比较
Apr 07 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
May 25 jQuery
纯javascript前端实现base64图片下载(兼容IE10+)
Sep 14 Javascript
如何手动实现es5中的bind方法详解
Dec 07 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
Feb 26 Javascript
Vue的Options用法说明
Aug 14 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查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
详解vue-router和vue-cli以及组件之间的传值
2017/07/04 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
webpack引入eslint配置详解
2018/01/22 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
vuex入门最详细整理
2020/03/04 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
2019/08/13 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
俄罗斯运动鞋商店:Sneakerhead
2018/05/10 全球购物
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
平面设计师工作职责范文
2013/12/03 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
安全保证书怎么写
2015/02/28 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
企业安全生产检查制度
2015/08/06 职场文书
六年级作文之关于梦
2019/10/22 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS