日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

elementui树状菜单tree_vue.js+element-ui做出菜单树形结构

發布時間:2023/12/10 vue 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elementui树状菜单tree_vue.js+element-ui做出菜单树形结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這次給大家帶來vue.js+element-ui做出菜單樹形結構,vue.js+element-ui做出菜單樹形結構的注意事項有哪些,下面就是實戰案例,一起來看一下。

由于業務需要,要求實現樹形菜單,且菜單數據由后臺返回,在網上找了幾篇文章,看下來總算有了解決辦法。

場景:根據業務要求,需要實現活動的樹形菜單,菜單數據由后臺返回,最后的效果圖如下:

后臺返回的數據格式是這個樣子的: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

},

{

pID:'m2',

name:'目錄二--菜單二',

menuID:'m22',

isContent:true

},

]

let tree = []

for(let i=0;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

for(let j=0;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的值來遞歸。我直接把代碼貼出來

theme="dark"

:default-active="openMenuID"

:default-openeds="openMenuArr"

class="el-menu"

@select="handleSelect">

{{item.name}}

{{item.name}}

tree-menu組件的代碼:

{{menu.name}}

{{menu.name}}

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

總結

以上是生活随笔為你收集整理的elementui树状菜单tree_vue.js+element-ui做出菜单树形结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。