利用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的对话框详解与参数
Mar 08 Javascript
JQuery设置和去除disabled属性的5种方法总结
May 16 Javascript
js键盘事件的keyCode
Jul 29 Javascript
易被忽视的js事件问题总结
May 14 Javascript
JS去除空格和换行的正则表达式(推荐)
Jun 14 Javascript
Three.js加载外部模型的教程详解
Nov 10 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 Javascript
微信小程序登录数据解密及状态维持实例详解
May 06 Javascript
Vue打包后访问静态资源路径问题
Nov 08 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
Nov 29 Javascript
5个你不知道的JavaScript字符串处理库(小结)
Jun 01 Javascript
JavaScript冒泡算法原理与实现方法深入理解
Jun 04 Javascript
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
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php中的依赖注入实例详解
2019/08/14 PHP
js中获取事件对象的方法小结
2011/03/13 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
Express的路由详解
2015/12/10 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
javascript正则表达式总结
2016/02/29 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
javascript如何实现create方法
2019/11/04 Javascript
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
Python3访问并下载网页内容的方法
2015/07/28 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
Python中的pack和unpack的使用
2018/03/12 Python
对python sklearn one-hot编码详解
2018/07/10 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
美国滑雪板和装备购物网站:Skis.com
2018/12/20 全球购物
机电系毕业生求职信
2014/07/11 职场文书
火锅店的活动方案
2014/08/15 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
党员承诺书范文2015
2015/04/27 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
企业愿景口号
2015/12/25 职场文书