利用Vue2.x开发实现JSON树的方法


Posted in Javascript onJanuary 04, 2018

前言

最近工作中遇到一个需求,由于项目需要一个解析 JSON 字符串并生成 JSON 树的功能,在 GitHub 上也没有找到合适的组件,因此基于 Vue2.X 自己写了一个 JSON 树组件,主要原理是利用 Vue 的递归组件,进行深度优先的先序遍历。该组件不仅可以将一段不可读的 JSON 字符串转化为可读的树形结构,同时可用于抓取某一子树的数据。

  • Github源码
  • Github-Page

组件在它的模板内可以递归地调用自己。不过,只有当它有 name 选项时才可以这么做

字符串数据美化功能:

利用Vue2.x开发实现JSON树的方法

特定层级数据抓取功能:

利用Vue2.x开发实现JSON树的方法

<tree
 :parent-data="data"
 :data="item"
 :path="path + (Array.isArray(data) ? `[${index}]` : `.${index}`)"
 :path-checked="pathChecked"
 :path-selectable="pathSelectable"
 :selectable-type="selectableType"
 :index="index"
 :child="true"
 @click="handleItemClick">
</tree>

通过 parent-data 传入父亲的数据,data 传入孩子的数据,当子树的数据是简单类型时,不再进入递归,同时该组件提供了一个 click 事件,用于获取特定节点的树数据,而孩子的数据,则通过递归机制不断向上一层级传递,类似于“冒泡机制”。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript 变量命名规则
Sep 23 Javascript
Dom在ajax技术中的作用说明
Oct 25 Javascript
JavaScript中清空数组的三种方法分享
Apr 07 Javascript
DIV始终居中的js代码
Feb 17 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
May 12 Javascript
JS实现上下左右对称的九九乘法表
Feb 22 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
Nov 10 Javascript
AngularJS自定义服务与fliter的混合使用
Nov 24 Javascript
jQuery插件zTree实现删除树子节点的方法示例
Mar 08 Javascript
使用ionic播放轮询广告的实现方法(必看)
Apr 24 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
Jan 08 jQuery
vue-cli配置文件——config篇
Jan 04 #Javascript
jQuery封装animate.css的实例
Jan 04 #jQuery
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
Jan 04 #Javascript
浅谈vuex 闲置状态重置方案
Jan 04 #Javascript
详解Angular5 服务端渲染实战
Jan 04 #Javascript
JavaScript中的高级函数
Jan 04 #Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
Jan 04 #Javascript
You might like
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
对table和ul实现js分页示例分享
2014/02/24 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
python中threading超线程用法实例分析
2015/05/16 Python
python字符串的常用操作方法小结
2016/05/21 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
python 爬取疫情数据的源码
2020/02/09 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
2014年医学生毕业自我鉴定
2014/03/26 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
夏洛特的网观后感
2015/06/15 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP