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 相关文章推荐
IE8 原生JSON支持
Apr 13 Javascript
JavaScript 常用函数
Dec 30 Javascript
JS控制文本框textarea输入字数限制的方法
Jun 17 Javascript
简单常用的幻灯片播放实现代码
Sep 25 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
jquery实现非叠加式的搜索框提示效果
Jan 07 Javascript
实现前后端数据交互方法汇总
Apr 07 Javascript
jQuery简单tab切换效果实现方法
Apr 08 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
Apr 03 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
老生常谈js动态添加事件--- 事件委托
Jul 19 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 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实现读取一个1G的文件大小
2013/08/24 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
php支付宝APP支付功能
2020/07/29 PHP
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
Jquery实现自定义tooltip示例代码
2014/02/12 Javascript
Jquery ajax请求导出Excel表格的实现代码
2016/06/08 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
使用python Django做网页
2013/11/04 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
python获取本地计算机名字的方法
2015/04/29 Python
python创建一个最简单http webserver服务器的方法
2015/05/08 Python
Python fileinput模块使用实例
2015/05/28 Python
python交互式图形编程实例(一)
2017/11/17 Python
python绘制双柱形图代码实例
2017/12/14 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
学生爱国演讲稿
2014/01/14 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
银行求职信
2014/05/31 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js
Oracle中DBLink的详细介绍
2022/04/29 Oracle
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python