不依任何赖第三方,单纯用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图片轮换效果的函数
Sep 28 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
Jun 24 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
Jul 05 Javascript
js和jquery实现监听键盘事件示例代码
Jun 24 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
Jan 28 Javascript
javascript三种代码注释方法
Jun 02 Javascript
js+css3制作时钟特效
Oct 16 Javascript
详解JS-- 浮点数运算处理
Nov 28 Javascript
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
js 实现ajax发送步骤过程详解
Jul 25 Javascript
Node.js API详解之 os模块用法实例分析
May 06 Javascript
微信小程序实现转盘抽奖
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
学习使用PHP数组
2006/10/09 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
js操作table中tr的顺序实现上移下移一行的效果
2018/11/22 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
angular共享依赖的解决方案分享
2020/10/15 Javascript
win7安装python生成随机数代码分享
2013/12/27 Python
Python发送Email方法实例
2014/08/21 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Python元组知识点总结
2019/02/18 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
简单的JAVA编程面试题
2013/03/19 面试题
成教自我鉴定
2013/10/27 职场文书
男方父母证婚词
2014/01/12 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
检讨书格式
2015/01/23 职场文书
三峡导游词
2015/01/31 职场文书
毕业酒会致辞
2015/07/29 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers