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正则匹配换行问题实现代码
Dec 10 Javascript
js返回前一页刷新本页重载页面
Jul 29 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
Dec 29 Javascript
javascript实现简单的分页特效
Aug 12 Javascript
基于JavaScript实现跳转提示页面
Sep 24 Javascript
Bootstrap php制作动态分页标签
Dec 23 Javascript
vue.js 初体验之Chrome 插件开发实录
May 13 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
Apr 25 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 Javascript
Vue props中Object和Array设置默认值操作
Jul 30 Javascript
JS实现页面鼠标点击出现图片特效
Aug 19 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 显示客户端IP与服务器IP的代码
2010/10/12 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
python3 读写文件换行符的方法
2018/04/09 Python
python读取并写入mat文件的方法
2019/07/12 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
文明礼仪事迹材料
2014/01/09 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
捐书活动总结
2014/05/04 职场文书
会计系毕业生求职信
2014/05/28 职场文书
党建工作汇报材料
2014/12/24 职场文书
2015年技术员工作总结
2015/04/10 职场文书
公司捐书倡议书
2015/04/27 职场文书