国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

vue Element左側(cè)無限級(jí)菜單實(shí)現(xiàn)

瀏覽:79日期:2023-01-14 10:58:28

最近項(xiàng)目中,要用到element-ui的無限級(jí)分類菜單,根據(jù)角色生成不同的遞歸數(shù)據(jù),查閱了網(wǎng)上很多資料,發(fā)現(xiàn)很多都不太完整并且沒有很多的延伸性。

梳理遞歸數(shù)據(jù)

我們一般拿到后臺(tái)的數(shù)據(jù)是:1.扁平化數(shù)據(jù)格式2.遞歸式數(shù)據(jù)格式

let arr = [{ name:小七, id:1},{ name:小八, id:2},{ name: 小九, id:3}]

我們從后臺(tái)拿到的是這種扁平化處理數(shù)據(jù),那我們實(shí)現(xiàn)遞歸菜單的話需要什么數(shù)據(jù)格式呢,需要格式如下:

let menuItems = [{ name:小七, id:1, children:[ { name: ’啥也不是’, pid:2 } ]},{ name:小八, id:2, children:[ { name:’隨便寫哦’, pid:3, children:[{ name: ’再次深入’, pid: 4, children:[ { name: ’撒打算’, pid:666 } ]} ] } ]},{ name: 小九, id:3}]

我們就需要類似于以上的這種數(shù)據(jù)格式:扁平化數(shù)據(jù)轉(zhuǎn)換遞歸數(shù)據(jù),下面貼出我的數(shù)據(jù)處理方法:注:應(yīng)為在網(wǎng)上看到的許多的遞歸處理方法都不一樣,有的文章寫于很早很多方法都比較復(fù)雜或者代碼比較多余

computed: { treeData() { let cloneData = JSON.parse(JSON.stringify(this.tableData)); // 對(duì)源數(shù)據(jù)深度克隆 return cloneData.filter(father => { let branchArr = cloneData.filter(child => father.id == child.pid); //返回每一項(xiàng)的子級(jí)數(shù)組 branchArr.length > 0 ? (father.children = branchArr) : ''; //如果存在子級(jí),則給父級(jí)添加一個(gè)children屬性,并賦值 return father.pid == 0; //返回第一層 }); } },

其中this.tableData就是后臺(tái)給到我的扁平化數(shù)據(jù),這里將其替換就可以

當(dāng)時(shí)處理此功能時(shí)沒有考慮到子級(jí)或者父級(jí)有可能值位udfriend 所以沒有做判斷,如果想完善此遞歸數(shù)據(jù)處理的可以完善一下。

數(shù)據(jù)處理就要開始寫代碼了!

這里用到了vue-ement-ui的左側(cè)菜單

老規(guī)矩,程序員交流用代碼

index.vue

<el-menu background-color='#304156' text-color='#fff' active-text-color='#409eff' :collapse='isActive' :collapse-transition='false' :unique-opened='true' :router='true' :default-active='activePath' > <menu-tree :menuData='treeData' @saveNavStart='saveNavStart'></menu-tree> </el-menu> 這里的激活樣式用的是緩存的辦法 // 保存鏈接的激活狀態(tài) saveNavStart(activePath) { window.sessionStorage.setItem('activePath', activePath); this.activePath = activePath; }, created() { this.activePath = window.sessionStorage.getItem('activePath'); }

menuTree.vue組件

實(shí)現(xiàn)左側(cè)無限級(jí)菜單最重要的就是 組件自身調(diào)用自身廢話不多說,上代碼:

<template> <div> <label v-for='menu in menuData' :key='menu.id'> <el-submenu :index='String(menu.id)' v-if='menu.children'> <template slot='title'> <i class='el-icon-edit'></i> <span>{{menu.menu_name}}</span> </template> <label> <menutree :menuData='menu.children'></menutree> </label> </el-submenu> <el-menu-item :index='menu.path' @click='saveNavStart(menu.path)' v-else> <i class='el-icon-edit'></i> <span>{{menu.menu_name}}</span> </el-menu-item> </label> </div></template>methods:{ saveNavStart(activePath) { this.$emit(’saveNavStart’,activePath) } }}

到此就實(shí)現(xiàn)了左側(cè)菜單的無限級(jí)了,應(yīng)為現(xiàn)在給公司寫的項(xiàng)目都是權(quán)限功能,路由方面呢大家可以隨便寫,公司項(xiàng)目做了權(quán)限:左側(cè)菜單,按鈕限制,菜單限制,接口限制目前是四種。本人只是一個(gè)小白,分享在項(xiàng)目中遇到的問題,在百度沒有找到好的方法,踩坑分享出來。

到此這篇關(guān)于vue Element左側(cè)無限級(jí)菜單實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)vue Element左側(cè)無限級(jí)菜單內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 日本高清福利视频在线观看 | 日韩一级a毛片欧美一级 | 国产精品高清全国免费观看 | 毛片网站在线看 | 免费a级毛片大学生免费观看 | 一区二区三区中文 | 亚洲狠狠狠一区二区三区 | 成年人网站免费看 | 一级毛片私人影院免费 | 亚洲国产精品久久久久久 | 亚洲精品15p| 九九色网| 自拍视频第一页 | 一本色道久久88综合亚洲精品高清 | 精品国产一区二区三区久久影院 | 成人久久免费视频 | 久草在线视频免费资源观看 | 欧美jizzhd欧美精品 | 波多野结衣视频在线观看 | 男女在线视频 | 一区二区三区欧美 | 女人张开腿给人桶免费视频 | 日韩精品一区二区三区免费视频 | 亚洲一区二区三区国产精品 | 中文字幕在线成人免费看 | 国内精品免费一区二区三区 | 国产午夜永久福利视频在线观看 | 亚洲免费一 | 国产一区二区久久 | 一本大道香蕉大vr在线吗视频 | 国产不卡在线观看视频 | 久草手机在线观看视频 | 国产精品成人一区二区三区 | 亚州中文 | 精品久久一区二区三区 | 97精品国产综合久久久久久欧美 | 欧美一级毛片免费看 | 成人高清在线观看 | 黄色作爱| 99成人国产精品视频 | 成人影院一区二区三区 |