vue+element tree(树形控件)组件(1)
最近做了第一个组内可以使用的组件,虽然是最简版,也废了不少力。各位前辈帮我解决问题,才勉强搞定。让我来记录这个树形组件的编写过程和期间用到的知识点。
首先说说需求,就是点击出现弹窗+蒙板,弹窗内容是一个树组件当然,什么弹窗大小啊,是否显示多选框,默认选中,通过关键字过滤节点(element都自带好了)几个常用功能都封进来,等以后用到别的的时候再往里加。都解决了)
今天先记录处理数据的问题
与后台交流后得知通过接口会拿到这样的数据:
[
{ id: '01', label: '测试活动', pId: '1' },
{ id: '011', label: '测试活动1', pId: '01' },
{ id: '012', label: '测试活动2', pId: '01' },
{ id: '02', label: '测试活动3', pId: '1' },
{ id: '021', label: '测试活动4', pId: '02' },
{ id: '022', label: '测试活动5', pId: '02' },
{ id: '0221', label: '测试活动6', pId: '022' },
{ id: '0222', label: '测试活动7', pId: '022' },
{ id: '0223', label: '测试活动6', pId: '022' },
{ id: '0224', label: '测试活动7', pId: '022' },
{ id: '0225', label: '测试活动6', pId: '022' },
{ id: '0226', label: '测试活动7', pId: '022' },
]
而我们查看element的文档会看到想要用他们的插件数据格式是这样的
[{
id: 4,
label: '二级 1-1',
children: [{
id: 9,
label: '三级 1-1-1'
}, {
id: 10,
label: '三级 1-1-2'
}]
}]
}, {
id: 2,
label: '一级 2',
children: [{
id: 5,
label: '二级 2-1'
}, {
id: 6,
label: '二级 2-2'
}]
}, {
id: 3,
label: '一级 3',
children: [{
id: 7,
label: '二级 3-1'
}, {
id: 8,
label: '二级 3-2'
}]
}]
那这就要我们处理数据了,先上js代码
// 循环出父节点
export function toTreeData(data,id,pid,name) {
// 建立个树形结构,需要定义个最顶层的父节点,pId是1
let parent = [];
for (let i = 0; i < data.length; i++) { if(data[i][pid] !== "1"){
}else{
let obj = {
label: data[i][name],
id: data[i][id],
children: []
};
parent.push(obj);//数组加数组值
}
// console.log(obj);
// console.log(parent,"bnm"); }
children(parent); // 调用子节点方法,参数为父节点的数组
function children(parent) {
console.log(parent)
if (data.length !== 0) {
for (let i = 0; i < parent.length; i++) {
for (let j = 0; j < data.length; j++) {
if (parent[i].id == data[j][pid]){
let obj = {
label: data[j][name],
id: data[j][id],
children: []
};
parent[i].children.push(obj);
}
}
children(parent[i].children);
}
}
}
console.log(parent,"bjil")
return parent;
}
上面函数接的四个值分别是data所有数据 id id的那个字段名字 pid 父类id的字段名字 name 内容的字段名字 (因为传过来的字段不一定叫 id pid label所以写活的)
toTreeData(this.data,"id","pid","label")//这样调用就好使了
这个回调函数作用当然是转换数组的格式
单独拿出来这个函数不回调的时候它的作用就是你传入父元素组成的数组,它会把每一个父元素的直属子元素压入父元素的children字段中去,这样我们只需要把新生成的子元素组成的数组当做下一次调用的父元素数组调用这个函数它就会继续往里面深入
vue+element tree(树形控件)组件(1)的更多相关文章
- vue+element tree(树形控件)组件(2)
今天记录组件的代码和一个调用它的父组件的代码,接口接收数据直接传element直接能用的,也就是经过上一章函数处理过的数据以下是代码 父组件 <template> <commonfi ...
- 不依任何赖第三方,单纯用vue实现Tree 树形控件
这几天接到一个需求,里面有需要做一个属性组件,找的第三方的,但是不能完全满足我的需求,有这时间,我就自己做个小轮子吧. 先看效果图(红点之前用的字体图标,是个对号,这里为了方便,用圆圈代替了选中状态, ...
- vue+element-ui之tree树形控件有关子节点和父节点之间的各种选中关系详解
做后端管理系统,永远是最蛋疼.最复杂也最欠揍的事情,也永远是前端开发人员最苦逼.最无奈也最尿性的时刻.蛋疼的是需求变幻无穷,如同二师兄的三十六般变化:复杂的是开发难度寸步难行,如同蜀道难,难于上青天: ...
- Element ui tree树形控件获取当前节点id和父节点id
低版本Element ui tree树形控件获取当前节点id和父节点id的方法:点击查看 最新版本Element ui tree树形控件获取当前节点id和父节点id教程: 1.找到node_modul ...
- vue_elementUI_ tree树形控件 获取选中的父节点ID
el-tree 的 this.$refs.tree.getCheckedKeys() 只可以获取选中的id 无法获取选中的父节点ID想要获取选中父节点的id;需要如下操作1. 找到工程下的node_m ...
- ElementUI Tree树形控件renderContent return时报错
问题描述: 使用Tree树形控件使用render-content渲染时return后报错或npm run dev时候报错,报错信息相同,如下: 问题分析: renderContent函数中需要使用js ...
- BootstrapBlazor实战 Tree树形控件使用(2)
继续上篇实战BootstrapBlazor树型控件Tree内容, 本篇主要讲解整合Freesql orm快速制作数据库后台维护页面 demo演示的是Sqlite驱动,FreeSql支持多种数据库,My ...
- BootstrapBlazor实战-Tree树形控件使用(1)
实战BootstrapBlazor树型控件Tree的使用, 以及整合Freesql orm快速制作数据库后台维护页面 demo演示的是Sqlite驱动,FreeSql支持多种数据库,MySql/Sql ...
- Element ui 使用 Tree 树形控件
使用树形控件需要映入 jsx才能运行链接:https://github.com/vuejs/babel-plugin-transform-vue-jsx#usage npm install\ babe ...
随机推荐
- 《走出软件作坊》//TODO
目录 简介 结束语 简介 作者吕建伟(@阿朱),研发管理专家,原京东技术学院院长,中国互联网技术联盟发起人,历任首席架构师.技术总监以及CTO等职位.目前已接受用友集团董事长王文京邀请,加入用友组建研 ...
- 感叹号在Linux bash中使用技巧
1. 重复执行上一条指令 !! [root@iZ23t6nzr7dZ python]# ls /usr/local/ aegis bin etc games include lib lib64 li ...
- AndroidP推出多项AI功能,会不会引发新的隐私担忧?
让谷歌很"伤心"的是,相比苹果iOS系统的统一,Android系统的碎片化态势实在太严重了.就像已经发布一年多的Android O,其占有率仅有4.6%.主要是因为很多手机厂商都会 ...
- 【Linux_Shell 脚本编程学习笔记五、Oracle JDK1.8 安装shell 脚本】
脚本使用说明: 首先在脚本的同级目录下有个 jdk的安装包 脚本和安装包必须在同级目录下才能够安装(脚本没有优化,还可以使用 wget 从网上下载指定版本的 jdk 安装包) #!/bin/sh ...
- C# 开启线程的几种方式
1.异步委托开启线程 public static void Main(string[] args) { Action<int,int> a=add; a.BeginInvoke(,,nul ...
- JAVA的堆栈和内存、垃圾回收解说
1.有关java健壮性特点的真相 很多书上都说java健壮性的特点是因为java使用数组代替了c++的指针:c++最令人头痛的问题就是内存问题,java的健壮性使编程人员不用再考虑内存的问题:这种观点 ...
- Django的乐观锁与悲观锁实现
1) 事务概念 一组mysql语句,要么执行,要么全不不执行. 2) mysql事务隔离级别 Read Committed(读取提交内容) 如果是Django2.0以下的版本,需要去修改到 ...
- UAC table
CREATE TABLE `sys_dept` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `name` varchar(50) D ...
- Jenkins 2 如何使用 PowerShell 以及自定 build fail (指定 exit code)
Jenkins 除了用來做為 CI(持續性整合) 工具外,也可以與其他 plugin 配合達成其他目的(e.g.IIS restart.檔案壓縮備份-),今天就來看看可以怎麼與 PowerShell ...
- 使用GitBook编写项目文档
GitBook简介 GitBook 是使用 GitHub / Git 和 Markdown(或AsciiDoc)构建漂亮书籍的命令行工具(和Node.js库): GitBook 可以将您的内容作为网站 ...