不依任何赖第三方,单纯用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 相关文章推荐
用 Javascript 验证表单(form)中多选框(checkbox)值
Sep 08 Javascript
jQuery.clean使用方法及思路分析
Jan 07 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
Jan 25 Javascript
jquery制作居中遮罩层效果分享
Feb 21 Javascript
JavaScript中DOM详解
Apr 13 Javascript
JavaScript判断DIV内容是否为空的方法
Jan 29 Javascript
jQueryUI中的datepicker使用方法详解
May 25 Javascript
JS & JQuery 动态添加 select option
Jun 08 Javascript
利用Vue.js指令实现全选功能
Sep 08 Javascript
在vue中多次调用同一个定义全局变量的实例
Sep 25 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
May 23 Javascript
Vue的生命周期一起来看看
Feb 24 Vue.js
微信小程序实现转盘抽奖
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取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
php截取中文字符串函数实例
2015/02/23 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
python django 增删改查操作 数据库Mysql
2017/07/27 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
Python如何输出百分比
2020/07/31 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
单位提档介绍信
2014/01/17 职场文书
女娲补天教学反思
2014/02/05 职场文书
工程部主管岗位职责
2015/02/12 职场文书
三八妇女节寄语
2015/02/27 职场文书
建党伟业电影观后感
2015/06/01 职场文书
在职证明书模板
2015/06/15 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
《七律·长征》教学反思
2016/02/16 职场文书