不依任何赖第三方,单纯用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 相关文章推荐
使用onbeforeunload属性后的副作用
Mar 08 Javascript
getElementById在任意一款浏览器中都可以用吗的疑问回复
May 13 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
Jul 24 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
Mar 28 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
Aug 09 Javascript
Javascript函数的参数
Jul 16 Javascript
jQuery Real Person验证码插件防止表单自动提交
Nov 06 Javascript
BootStrap selectpicker
Jun 20 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
Sep 12 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
May 12 Javascript
深入浅析javascript函数中with
Oct 28 Javascript
vue绑定数字类型 value为数字的实例
Aug 31 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
PHP递归创建多级目录
2015/11/05 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
js function定义函数使用心得
2010/04/15 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
天网面试题
2013/04/07 面试题
仓库规划计划书
2014/04/28 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
售后客服个人自我评价
2014/09/14 职场文书
打架检讨书范文
2015/01/27 职场文书
导游词之山东八仙过海景区
2019/11/11 职场文书