不依任何赖第三方,单纯用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 相关文章推荐
如何在Mozilla Gecko 用Javascript加载XSL
Jan 09 Javascript
AJAX分页的代码(后台asp.net)
Feb 14 Javascript
读取input:file的路径并显示本地图片的方法
Sep 23 Javascript
javascript 3d 逐侦产品展示(核心精简)
Mar 26 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
Oct 30 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
Aug 25 Javascript
Bootstarp基本模版学习教程
Feb 01 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
Mar 05 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
Sep 25 Javascript
vue动画—通过钩子函数实现半场动画操作
Aug 09 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
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
Python实现多线程HTTP下载器示例
2017/02/11 Python
Django日志模块logging的配置详解
2017/02/14 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python获取中文字符串长度的方法
2018/11/14 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
利用python生成照片墙的示例代码
2020/04/09 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
SQL中where和having的区别
2012/06/17 面试题
逃课上网检讨书
2014/02/20 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
对教师的评语
2014/04/28 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
校园演讲稿汇总
2014/05/21 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书