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 相关文章推荐
jQuery DIV弹出效果实现代码
Jul 03 Javascript
ext jquery 简单比较
Apr 07 Javascript
将光标定位于输入框最右侧实现代码
Dec 04 Javascript
js有序数组的连接问题
Oct 01 Javascript
node.js中的fs.truncate方法使用说明
Dec 15 Javascript
jQuery实现的导航下拉菜单效果
Jul 04 Javascript
js验证真实姓名与身份证号,手机号的简单实例
Jul 18 Javascript
利用ES6实现单例模式及其应用详解
Dec 09 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
Dec 27 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
Jun 18 Javascript
Vue组件之高德地图地址选择功能的实例代码
Jun 21 Javascript
JavaScript实现前端网页版倒计时
Mar 24 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+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
JavaScript 实现??打印?理
2007/04/28 Javascript
wordpress之js库集合研究介绍
2007/08/17 Javascript
javascript 文档的编码问题解决
2009/03/01 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
python 魔法函数实例及解析
2019/09/25 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
500行python代码实现飞机大战
2020/04/24 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
物流专业大学生求职信范文
2013/10/28 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
Flink 侧流输出源码示例解析
2022/09/23 Servers