vue.js与element-ui实现菜单树形结构的解决方法

2020-06-14 05:57:12易采站长站整理

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

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

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


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
},
]

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


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