问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何将后台的树形数据、倒序的展示到前台vue+饿了么UI组件中的 面包屑...

发布网友 发布时间:2022-04-28 12:42

我来回答

4个回答

懂视网 时间:2022-05-14 19:46

本篇文章给大家带来的内容是关于vue+element tree(树形控件数据格式)组件的知识点总结,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

最近做了第一个组内可以使用的组件,虽然是最简版,也废了不少力。各位前辈帮我解决问题,才勉强搞定。让我来记录这个树形组件的编写过程和期间用到的知识点。

首先说说需求,就是点击出现弹窗+蒙板,弹窗内容是一个树组件当然,什么弹窗大小啊,是否显示多选框,默认选中,通过关键字过滤节点(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;
 }
 toTreeData(this.data,"id","pid","label")//这样调用就好使了

上面函数接的四个值分别是data所有数据 id id的那个字段名字 pid 父类id的字段名字 name 内容的字段名字 (因为传过来的字段不一定叫 id pid label所以写活的)

 toTreeData(this.data,"id","pid","label")//这样调用就好使了
 //这个回调函数作用当然是转换数组的格式

单独拿出来这个函数不回调的时候它的作用就是你传入父元素组成的数组,它会把每一个父元素的直属子元素压入父元素的children字段中去,这样我们只需要把新生成的子元素组成的数组当做下一次调用的父元素数组调用这个函数它就会继续往里面深入

热心网友 时间:2022-05-14 16:54

先处理数据顺序在渲染组件即可
1、先使用js对数据进行排序,按照倒序的排列好之后在把数据给到element UI的组件中渲染即可
2、js中最基本的数组排序方法是sort() ,复杂的类型结构需要自己遍历然后在排序的

热心网友 时间:2022-05-14 18:12

list: [{
id: 76,
name: "平板电视",
parendId: 75,
typeId: 37,
goods: [{
id: 75,
name: "大家电",
parendId: 74,
typeId: 36,
goods: [{
id: 74,
name: "家用电器",
parendId: 0,
typeId: 35,
goods: []
}]
}]

}],
mbxList:[]

getMbx(list) {
for (let l of list) {
this.mbxList.unshift({name:l.name,typeId:l.typeId})
this.getMbx(l.goods)
}
}

<span v-for="(item,index) in mbxList" :key="index">
{{item.name}} <span v-if="index != mbxList.length-1">></span>
</span>

热心网友 时间:2022-05-14 19:46

如果能确定层级的话,就一层一层渲染就好了,如果层级是不固定的,最简单还是写个递归 把数据拿出来
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 在vue中使用ztree树形组件,如何将ztree图片,改成字体图标呢?求解答?求... 《童年》读后感560字。现在急需 深圳市阳光三采文化科技有限公司怎么样? 宝贝猪读后感? 求一篇&lt;神奇宝贝&gt;的读后感 跪求600字读后感 印第安神话故事读后感300字? 东莞市阳光宝贝教育投资有限公司怎么样? 《阳光宝贝》中四个国家,哪个国家的养育方法最科学? 《你是我的宝贝》读后感 鸡蛋葱花饼的家常做法大全怎么做好吃视频 宝贝猪读后感400字怎么写? 宝贝猪读后感怎么写? 童年每一章读后感(200字左右) “亲爱的宝贝,如果你能活着,一定要记住我爱你.”这个故事 读后感想 《宝贝 宝贝》(少年版)《小嘎豆》《艾晚的水仙球》《云裳》《熊猫回家的路》的读后感300字。 《宝贝 宝贝》读后感小学五年级的 css能实现计算公式吗?比如1+1=2 3-2=1 请大师解答?? 华为手机前置摄像头不能用,怎么样调整 华为手机前置摄像头不能用,怎样调整 vue 树形结构列表 怎么判断一级列表还是二级列表? 解决vue页面DOM操作不生效的问题 vue渲染左边菜单栏,点击会出现二级菜单,渲染不成功 切换标签后,发现js有缓存,事件多次触发,如何解决 vue ivew menu 中三级菜单伸缩,箭头无法切换 vue 左侧菜单出现重复菜单问题怎么解决? 有遇到过这样的问题吗?_百 ... 这种参考手册用什么实现的,比如html;css;是否用js,大概框架? 科威特是哪个国家的? 科威特在哪个国家 科威特是哪个国家 科威特首都是哪个城市? 目前世界上最热的城市是哪个 有人知道科威特这个国家吗?? 科威特面积 科威特城的阳光下最高温度一度达到73℃,这种高温下适合生命存活吗? 大家教我一个魔术,就是一片纸怎么怎么样后,可以在你双手之间浮起,不用绳子,我认为用静电可以 静电怎么让钱飘起来 求一个厉害的预测魔术 求魔术! 谁能教我几个魔术?