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 相关文章推荐
新页面打开实际尺寸的图片
Aug 25 Javascript
永不消失的title提示代码
Feb 15 Javascript
js 对小数加法精度处理示例说明
Dec 27 Javascript
SeaJS入门教程系列之完整示例(三)
Mar 03 Javascript
jquery获取checkbox的值并post提交
Jan 14 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
Jun 20 Javascript
仿iframe效果Aajx文件上传实例
Nov 18 Javascript
Javascript之面向对象--接口
Dec 02 Javascript
B/S(Web)实时通讯解决方案分享
Apr 06 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
Vue实现简单计算器案例
Feb 25 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中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
javascript据option的value值快速设定初始的selected选项
2007/08/13 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
JQuery 图片滚动轮播示例代码
2014/03/24 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python中turtle库的使用实例
2019/09/09 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
Python如何给你的程序做性能测试
2020/07/29 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
视光学专业毕业生推荐信
2013/10/28 职场文书
老乡会致辞
2015/07/28 职场文书
总经理聘用协议书
2015/09/21 职场文书
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js
解决WINDOWS电脑开机后桌面没有任何图标
2022/04/09 数码科技
Python作用域和名称空间的详细介绍
2022/04/13 Python