利用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字符串处理性能的代码
Dec 07 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
jQuery的图片滑块焦点图插件整理推荐
Dec 07 Javascript
jquery滚动加载数据的方法
Mar 09 Javascript
基于node实现websocket协议
Apr 25 Javascript
js设置和获取自定义属性的方法
Oct 20 Javascript
angularjs 表单密码验证自定义指令实现代码
Oct 27 Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 Javascript
JS动画定时器知识总结
Mar 23 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
Aug 23 Javascript
详解如何解决使用JSON.stringify时遇到的循环引用问题
Mar 23 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 strncasecmp字符串比较的小技巧
2011/01/04 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
[57:53]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#3OG VS VP
2016/03/03 DOTA
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
Pytorch之parameters的使用
2019/12/31 Python
Python安装whl文件过程图解
2020/02/18 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
德国网上药房:Apotal
2017/04/04 全球购物
英国儿童设计师服装和玩具购物网站:Zac & Lulu
2020/10/19 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
应届大专毕业生个人自荐信
2013/09/22 职场文书
交通法规咨询中心工作职责
2013/11/27 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
三方合作意向书范本
2015/05/09 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
Python基础之元编程知识总结
2021/05/23 Python