不依任何赖第三方,单纯用vue实现Tree 树形控件的案例


Posted in Javascript onSeptember 21, 2020

这几天接到一个需求,里面有需要做一个属性组件,找的第三方的,但是不能完全满足我的需求,有这时间,我就自己做个小轮子吧。

先看效果图(红点之前用的字体图标,是个对号,这里为了方便,用圆圈代替了选中状态,所以不是太好看,需要的自行修改就好)

不依任何赖第三方,单纯用vue实现Tree 树形控件的案例

我直接用的vue-cli搭建的项目,代码目录如下:

不依任何赖第三方,单纯用vue实现Tree 树形控件的案例

使用方式如下:

不依任何赖第三方,单纯用vue实现Tree 树形控件的案例

treeData的格式如下:

treeData: [
    {open: false, name: '1', level: 0, checked: true},
    {
     open: false, // opend 是否展开子集
     name: '2',
     level: 0, //level代表第几层
     checked: false, // checked 代表是否选中状态
     children: [
      {
       open: false,
       name: '3',
       level: 1,
       checked: false,
       children: [
        {open: false, name: '4', level: 2, checked: false},
        {
         open: false,
         name: '5',
         level: 2,
         checked: false
        }
       ]
      }
     ]
    }
   ],

这个组件设计到几个关键点如下:

1. 深度watch

由于数据是个深层的对象,所以单纯的watch,检测不到数据的变化,所以使用deep,代码如下:

watch: {
  // 深度监听 treeDate的数据变化 用 deep
  treeData: {
   handler: function (newVal, oldVal) {
    this.calculateSelectFormResult()
   },
   deep: true
  }
 }

2.递归

数据的结果是用递归遍历出来的,

calculateSelectFormResult: function () {
   var arr = []
   function f (obj) {
    for (var i in obj) {
     if (obj[i].checked) {
      // console.log(2)
      arr.push(obj[i].name)
     }
     if (obj[i].children) {
      if (obj[i].children.length !== 0) {
       f(obj[i].children)
      }
     }
    }
   }
   f(this.treeData)
   this.selectFormResult = arr
   console.log(this.selectFormResult)
  }

3.模拟slideDown slideUp动画效果

不依任何赖第三方,单纯用vue实现Tree 树形控件的案例

项目完整代码地址: https://github.com/YalongYan/tree

补充知识:vue实现elment 可编辑树形控件

功能实现程度:

elment树形控件,已具备新增、删除功能,此项目,添加编辑功能,新增时可对节点命名,也可直接给已添加的节点修改名字

先看效果:

不依任何赖第三方,单纯用vue实现Tree 树形控件的案例

控件有所改动,如加输入框,输入关键字过滤,节点图标变换。。。。参看elment Tree树形控件文档即可

项目下载

项目地址:https://github.com/midnightvisitor/vue-el-tree.git

如需要,请自行下载

以上这篇不依任何赖第三方,单纯用vue实现Tree 树形控件的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
代码精简的可以实现元素圆角的js函数
Jul 21 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
Sep 15 Javascript
node.js中的fs.lchmodSync方法使用说明
Dec 16 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
Feb 25 Javascript
Jquery $when done then的用法详解
May 20 Javascript
javascript 四十条常用技巧大全
Sep 09 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
vue源码学习之Object.defineProperty对象属性监听
May 30 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
Sep 14 Javascript
JavaScript 实现同时选取多个时间段的方法
Oct 17 Javascript
jQuery擦除插件eraser使用方法详解
Jan 11 jQuery
微信小程序实现转盘抽奖
Sep 21 #Javascript
结合axios对项目中的api请求进行封装操作
Sep 21 #Javascript
微信小程序实现打卡签到页面
Sep 21 #Javascript
微信小程序实现签到弹窗动画
Sep 21 #Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
Sep 21 #Javascript
微信小程序实现日历签到
Sep 21 #Javascript
Vue切换Tab动态渲染组件的操作
Sep 21 #Javascript
You might like
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
python实现socket端口重定向示例
2014/02/10 Python
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Python读取实时数据流示例
2019/12/02 Python
python实现按关键字筛选日志文件
2019/12/24 Python
python属于解释型语言么
2020/06/15 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
行政办公室岗位职责
2014/03/18 职场文书
专业技术职务聘任书
2014/03/29 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
大二学年个人总结
2015/03/03 职场文书
奖励申请报告范文
2015/05/15 职场文书
起诉书范文
2015/05/20 职场文书
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python