vue 树形数据增加属性并计算树节点的深度
需求:在一组菜单树结构中转换数据结构(增加一些属性),并计算该树结构的节点深度。
实现util.js:
function transferTreeData(arr, vm, list, level, deep={maxLevel: 0}){
if(Object.prototype.toString.ceil(arr) !== '[object array]'){
return;
}
arr.forEach((item, index) => {
item.levelList = [];
item.level = level;
item.levelList.push(index);
item.levelList = list.concat(item.levelList);
vm.$set(item, 'expand', false);
vm.$set(item, 'sort', ++deep.maxLevel);
vm.$set(item, 'secondLast', getMaxFloor(item.children));
if(item.children && item.children.length){
transferTreeData(item.children, vm, item.levelList,item.level + 1,deep);
}
});
}
// 获取节点深度
function getMaxFloor(treeData){
let deep = 0;
function eachData(data, index) {
data.forEach(elem => {
if (index > deep) {
deep = index;
}
if (elem.children.length > 0) {
eachData(elem.children, deep + 1);
}
}) }
getMaxFloor(treeData, 1);
return deep;
}
expoer default transferTreeData;
数据结构:
const data = [
{
id: "001",
name: "菜单001",
children: [
{
id: "001001",
name: "菜单001001",
children: [
{
{
id: "001001001",
name: "菜单001001001",
children: []
}
}
]
}
]
},
{
id: "002",
name: "菜单002",
children: []
}
];
vue 树形数据增加属性并计算树节点的深度的更多相关文章
- Easyui 实现点击不同树节点打开不同tab页展示不同datagrid表数据设计
实现点击不同树节点打开不同tab页展示不同datagrid表数据设计 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 需求描述 如上图, 1.点击左侧树,叶子 ...
- Vue.js-05:第五章 - 计算属性与监听器
一.前言 在 Vue 中,我们可以很方便的将数据使用插值表达式( Mustache 语法)的方式渲染到页面元素中,但是插值表达式的设计初衷是用于简单运算,即我们不应该对差值做过多的操作.当我们需要对差 ...
- table-tree 表格树、树形数据处理、数据转树形数据
前言 公司想搞个表格树的展示页面,看着element有个表格树,还以为可以用. 用出来只用表格没有树,研究半天没研究个所以然,只能从新找个 npm里找到一个:vue-table-with-tree-g ...
- vue 对象提供的属性功能、通过axio请求数据(2)
1 Vue对象提供的属性功能 1.1 过滤器 过滤器,就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中. 1.1.1 使用Vue.filter()进行全局定义(全局 ...
- Vue(基础三)_监听器与计算属性
一.前言 本文主要涉及: 1.watch()监听单个属性 2.computed可以监听多个属性 3.点击li标签切换音乐案例 二.主要内容 1.watch()监听器(监听单一数据) (1)监听 ...
- Vue中methods(方法)、computed(计算属性)、watch(侦听器)的区别
1.computed和methods 共同点:computed能现实的methods也能实现: 不同点:computed是基于它的依赖进行缓存的.computed只有在它的相关依赖发生变化才会重新计算 ...
- Vue 学习笔记 — css属性计算的问题
简书 今天在使用Vue时遇到一个问题:在切换css内联属性时某些特殊属性的计算会有问题,无法得到预期的结果. 例子: https://jsfiddle.net/blqw/cLwau40z/ 上面的页面 ...
- Web中树形数据(层级关系数据)的实现—以行政区树为例
在Web开发中常常遇到树形数据的操作,如菜单.组织机构.行政区(省.市.县)等具有层级关系的数据. 以下以行政区为例说明树形数据(层级关系数据)的存储以及实现,效果如图所看到的. 1 数据库表结构设计 ...
- 在Bootstrap开发框架中使用bootstrapTable表格插件和jstree树形列表插件时候,对树列表条件和查询条件的处理
在我Boostrap框架中,很多地方需要使用bootstrapTable表格插件和jstree树形列表插件来共同构建一个比较常见的查询界面,bootstrapTable表格插件主要用来实现数据的分页和 ...
随机推荐
- LINUX - vim高效操作
(一)可以为操作的一行添加下划线 set cursorline
- leetcode31 下一个排列 字典序
数字的字典序就是比大小 先想几个例子 123_>132 1243-> 1324 ,12453-> 12534 1.不可排的序列就是降序序列 2.两个相同长度的串比大小,前面相同, ...
- select用法&原理详解(源码剖析)(转)
今天遇到了在select()前后fd_set的变化问题,查了好久终于找到一个有用的帖子了,很赞,很详细!!原文链接如下: select用法&原理详解(源码剖析) 我的问题是: 如下图示:在se ...
- hdoj 5971
Wrestling Match Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- Mysql(三)------事务的特性、事务并发、事务读一致性问题
1 什么是数据库的事务? 1.1 事务的典型场景 在项目里面,什么地方会开启事务,或者配置了事务?无论是在方法上加注解,还 是配置切面 <tx:advice id="txAdvice& ...
- 攻防世界ctf bug
bug 考查: 逻辑漏洞.文件内容检测绕过 ,文件头是位于文件开头的一段承担一定任务的数据,一般开头标记文件类型,如gif的gif89a,或gif87a, png的x89PNG\x0d\x0a,等等 ...
- php 文件包含base64读取文件 preg_replace函数
解题部分题目来源攻防世界web高手进阶区1.拿到题目以后,发现是一个index.php的页面,并且设备-没有显示完全,此位置可疑.2.源代码中发现?page=index,出现page这个get参数,联 ...
- bash copy multi files
bash copy multi files # copy one file $ cp file1.js /var/www/html # copy multi files ??? no space $ ...
- http methods & restful api methods
http methods & restful api methods 超文本传输协议(HTTP)是用于传输超媒体文档(例如HTML)的应用层协议 https://developer.moz ...
- 埋点 & 数据上报 & 数据异常处理
埋点 & 数据上报 & 数据异常处理 如何在用户关闭浏览器前面,发送请求 beforeunload unload https://developer.mozilla.org/en-US ...