利用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 相关文章推荐
js报错 Object doesn't support this property or method的原因分析
Mar 31 Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 Javascript
Jquery实现页面加载时弹出对话框代码
Apr 19 Javascript
js实现微信分享代码
Oct 11 Javascript
js a标签点击事件
Mar 30 Javascript
vue.js利用defineProperty实现数据的双向绑定
Apr 28 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
关于vue.js组件数据流的问题
Jul 26 Javascript
快速将Vue项目升级到webpack3的方法步骤
Sep 14 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
Vue实现导出excel表格功能
Mar 30 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 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
yii2的restful api路由实例详解
2019/05/14 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
PHP7修改的函数
2021/03/09 PHP
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
vue实现记事本功能
2019/06/26 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中分数的相关使用教程
2015/03/30 Python
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
程序员机试试题汇总
2012/03/07 面试题
后勤人员自我鉴定
2013/10/20 职场文书
暑期培训班招生方案
2014/08/26 职场文书
购房委托书范本
2014/09/18 职场文书
自我推荐信怎么写
2015/03/24 职场文书
统招统分证明
2015/06/23 职场文书
开学第一周总结
2015/07/16 职场文书
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python
python高温预警数据获取实例
2022/07/23 Python