300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > vue.js与element-ui实现菜单树形结构的操作

vue.js与element-ui实现菜单树形结构的操作

时间:2018-11-12 08:30:56

相关推荐

vue.js与element-ui实现菜单树形结构的操作

web前端|js教程

javascript,element-ui,vue.js

web前端-js教程

本文通过实例给大家介绍了vue.js与element-ui实现菜单树形结构,非常不错,具有参考借鉴价值,需要的朋友可以参考下

imhist源码,学生选课系统用vscode,ubuntu dpkg中断,tomcat架构及原理,乐猪爬虫,php调用mysql数据库,广州seo优化效果好不好,与九息娱乐类似的网站,phpwind模板乱码lzw

由于业务需要,要求实现树形菜单,且菜单数据由后台返回,在网上找了几篇文章,看下来总算有了解决办法。

旅游织梦源码,vscode怎么批量操作,ubuntu内网连接,tomcat运存,sqlite日期默认值,前端有学两种框架的必要吗,0基础可以学习python爬虫吗,php是什么后缀,珠海seo优化报价,收集淘宝的网站,手机网页程序代码,微软概念网站模板lzw

场景:根据业务要求,需要实现活动的树形菜单,菜单数据由后台返回,最后的效果图如下:

源码 外汇公司,ubuntu文件自动挂载,tomcat局域网测试,excel爬虫处理,php酒店预订管理系统,seo laravellzw

后台返回的数据格式是这个样子的:

data=[{ pID:1,//父ID name:目录一,menuID:m1,//本身IDisContent:false//判断是否是目录}, {pID:1, name:目录二,menuID:m2,isContent:false }, { pID:m1, name:目录一--菜单一,menuID:m11,isContent:true }, { pID:m1, name:目录一--目录一,menuID:m12,isContent:false },{pID:m12, name:目录一--目录一--菜单一,menuID:m121, isContent:true }, { pID:m2, name:目录二--菜单一,menuID:m21,isContent:true }, { pID:m2, name:目录二--菜单二,menuID:m22,isContent:true }, ]

这是一串具有父子关系的数据,首先就是要把这一大串数据转化成树形结构:

tree(){ let data=[{ pID:1,//父ID name:目录一, menuID:m1,//本身ID isContent:false//判断是否是目录 }, { pID:1, name:目录二, menuID:m2, isContent:false }, { pID:m1, name:目录一--菜单一, menuID:m11, isContent:true }, { pID:m1, name:目录一--目录一, menuID:m12, isContent:false }, { pID:m12, name:目录一--目录一--菜单一, menuID:m121, isContent:true }, { pID:m2, name:目录二--菜单一, menuID:m21, isContent:true }, { pID:m2, name:目录二--菜单二, menuID:m22, isContent:true },] let tree = [] for(let i=0;i<data.length;i++){if(data[i].pID == 1){ let obj = data[i] obj.list = [] tree.push(obj) data.splice(i,1) i--} } menuList(tree) console.log(tree) function menuList(arr){if(data.length !=0){ for(let i=0; i<arr.length;i++){ for(let j=0;j<data.length;j++){if(data[j].pID == arr[i].menuID){ let obj = data[j] obj.list = [] arr[i].list.push(obj) data.splice(j,1) j--} } menuList(arr[i].list) }} }}

运行完后返回的结构就是这个样子:

[{"pID":"1","name":"目录一","menuID":"m1","isContent":false,"list":[{"pID":"m1","name":"目录一--菜单一","menuID":"m11","isContent":true,"list":[]},{"pID":"m1","name":"目录一--目录一","menuID":"m12","isContent":false,"list":[{"pID":"m12","name":"目录一--目录一--菜单一","menuID":"m121","isContent":true,"list":[]}]}]},{"pID":"1","name":"目录二","menuID":"m2","isContent":false,"list":[{"pID":"m2","name":"目录二--菜单一","menuID":"m21","isContent":true,"list":[]},{"pID":"m2","name":"目录二--菜单二","menuID":"m22","isContent":true,"list":[]}]}]

接下来就要展示了,项目中用的element-ui的导航菜单组件,为了实现这样的树形结构,将每一级的菜单单独作为一个组件,通过判断isContent的值来递归。我直接把代码贴出来

{{item.name}}{{item.name}}

tree-menu组件的代码:

{{menu.name}} {{menu.name}}

jQuery+vue.js实现九宫格拼图

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。