不依任何赖第三方,单纯用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 相关文章推荐
IE FF OPERA都可用的弹出层实现代码
Sep 29 Javascript
JS类的封装及实现代码
Dec 02 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 Javascript
解析URI与URL之间的区别与联系
Nov 22 Javascript
了解Javascript的模块化开发
Mar 02 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
Mar 24 Javascript
详谈js中window.location.search的用法和作用
Feb 13 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
JS判断时间段的实现代码
Jun 14 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
express中static中间件的具体使用方法
Oct 17 Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
Nov 04 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
一些关于PHP的知识
2006/11/17 PHP
dedecms模板标签代码官方参考
2007/03/17 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
dojo随手记 gird组件引用
2011/02/24 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
2016/08/23 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
vue-router命名路由和编程式路由传参讲解
2019/01/19 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
请求时token过期自动刷新token操作
2020/09/11 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
Python的randrange()方法使用教程
2015/05/15 Python
Python中用sleep()方法操作时间的教程
2015/05/22 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
python实现随机梯度下降(SGD)
2020/03/24 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
win10安装python3.6的常见问题
2020/07/01 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
采购部部门职责
2013/12/15 职场文书
政治学求职信
2014/06/03 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
教你nginx跳转配置的四种方式
2022/07/07 Servers