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

歡迎訪問 生活随笔!

生活随笔

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

vue

vue element 实现树形菜单栏n层级分类,NavMenu menu

發(fā)布時間:2023/12/10 vue 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue element 实现树形菜单栏n层级分类,NavMenu menu 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言:項目有個需求,要實現(xiàn)多層文件夾的下拉。
思路:數(shù)據(jù)結構為數(shù)組多層級嵌套模式,需要利用遞歸渲染菜單欄數(shù)據(jù)實現(xiàn)菜單多層級分類。

什么是遞歸?

定義:就是函數(shù)自己調(diào)用自己本身,或者在自己函數(shù)調(diào)用的下級函數(shù)中調(diào)用自己。
遞歸函數(shù)的使用要注意函數(shù)終止條件避免死循環(huán);

遞歸的步驟

假設遞歸函數(shù)已經(jīng)寫好
尋找遞推關系
將遞推關系的結構轉(zhuǎn)換為遞歸體
將臨界條件加入到遞歸體中

了解什么是遞歸后開始著手敲代碼;
1.首先 模擬菜單數(shù)據(jù),引入封裝組件,index.vue

<template><div class="container"><el-row class="main-part"><el-col :span="5" class="title-col"><!-- 實現(xiàn)菜單多級分類 --><el-menu@open="handleOpen"@close="handleClose"default-active="1-1-1-1"background-color="#fff"text-color="#000"active-text-color="#000"><!-- 引入組件 --><menu-tree :menuData="menuList"></menu-tree></el-menu></el-col></el-row></div> </template><script> import MenuTree from '../../components/MentTree' export default {components: {MenuTree},data () {return {menuList: [{"id": "1363387207968104450","name": "第一層","suffix": null,"fileId": null,"fileType": "folder","fileTypeDesc": null,"isDirectory": "Y","children": [{"id": "1363387238204841985","name": "第二層","suffix": null,"fileId": null,"fileType": "folder","fileTypeDesc": null,"isDirectory": "Y","children": [{"id": "1363387269502738434","name": "第三層","suffix": null,"fileId": null,"fileType": "folder","fileTypeDesc": null,"isDirectory": "Y","children": [{"id": "1363089537374359554","name": "第四層","suffix": null,"fileId": null,"fileType": "folder","fileTypeDesc": null,"isDirectory": "Y","children": [{"id": "1363094062248235010","name": "測試重命名12123123","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363089537374359554"},{"id": "1363094062248235011","name": "測試重命名12123123","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363089537374359554"},{"id": "1363094062248235012","name": "測試重命名12123123","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363089537374359554"}],"parentId": null},{"id": "1363094062248235012","name": "測試重命名12123123","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363387269502738434"}],"parentId": "1363387238204841985"},{"id": "1363387269502738435","name": "第三層2","suffix": null,"fileId": null,"fileType": "folder","fileTypeDesc": null,"isDirectory": "Y","children": [{"id": "1363089537374359555","name": "第四層2","suffix": null,"fileId": null,"fileType": "folder","fileTypeDesc": null,"isDirectory": "Y","children": [{"id": "1363094062248235012","name": "測試重命名","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363089537374359555"}],"parentId": '1363387269502738435'}],"parentId": "1363387238204841985"}],"parentId": "1363387207968104450"}]},{"id": "1363387207968104451","name": "第一層2","suffix": null,"fileId": null,"fileType": "folder","fileTypeDesc": null,"isDirectory": "Y","children": [{"id": "1363094062248235011","name": "測試1","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363387207968104451"},{"id": "1363094062248235012","name": "測試2","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363387207968104451"},{"id": "1363094062248235013","name": "測試3","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363387207968104451"},{"id": "1363094062248235014","name": "測試4","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363387207968104451"},{"id": "1363094062248235015","name": "測試5","suffix": "png","fileId": "1363094050751647746","path": "http://dwz.date/enkm","fileType": "png","fileTypeDesc": "圖像","isDirectory": "N","parentId": "1363387207968104451"}]}]}},mounted () {},methods: {} } </script>

2.MenuTree組件內(nèi)部實現(xiàn)菜單欄遞歸渲染

<template><div><template v-for="menu in this.menuData"><el-submenu :key="menu.id" :index="menu.id" v-if="menu.children"><template slot="title"><i :class="menu.icon"></i><span slot="title">{{menu.name}}</span></template><menu-tree :menuData="menu.children"></menu-tree></el-submenu><el-menu-item :key="menu.id" :index="menu.id" v-else><i :class="menu.icon"></i><span slot="title">{{menu.name}}</span></el-menu-item></template></div> </template><script> export default {props: ['menuData'],name: 'MenuTree' } </script> <style>.el-menu-item{overflow:hidden} </style>

3.最后的效果展示

總結

以上是生活随笔為你收集整理的vue element 实现树形菜单栏n层级分类,NavMenu menu的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。