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 相关文章推荐
extjs grid取到数据而不显示的解决
Dec 29 Javascript
HTML中的setCapture和releaseCapture使用介绍
Mar 21 Javascript
使用jquery动态加载javascript以减少服务器压力
Oct 29 Javascript
jQuery常见开发技巧详细整理
Jan 02 Javascript
javascript 树形导航菜单实例代码
Aug 13 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
javascript中Date format(js日期格式化)方法小结
Dec 17 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
AngularJS中$apply方法和$watch方法用法总结
Dec 13 Javascript
EasyUI学习之DataGird分页显示数据
Dec 29 Javascript
JS设计模式之单例模式(一)
Sep 29 Javascript
详解使用vuex进行菜单管理
Dec 21 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在Web开发领域的优势
2006/10/09 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
js获取url传值的方法
2015/12/18 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
Python中replace方法实例分析
2014/08/20 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
Python删除n行后的其他行方法
2019/01/28 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
python每天定时运行某程序代码
2019/08/16 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
python 线程的五个状态
2020/09/22 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
为什么会有内存对齐
2016/10/10 面试题
中餐厅主管的职责范文
2014/02/04 职场文书
大学生学年自我鉴定
2014/02/10 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
文言文辞职信
2015/02/28 职场文书
2019消防宣传标语!
2019/07/10 职场文书
HAM-2000摩机图
2021/04/22 无线电