色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

vue Element左側無限級菜單實現(xiàn)

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

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

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

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

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

我們從后臺拿到的是這種扁平化處理數(shù)據(jù),那我們實現(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ù)轉換遞歸數(shù)據(jù),下面貼出我的數(shù)據(jù)處理方法:注:應為在網(wǎng)上看到的許多的遞歸處理方法都不一樣,有的文章寫于很早很多方法都比較復雜或者代碼比較多余

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

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

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

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

這里用到了vue-ement-ui的左側菜單

老規(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組件

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

<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) } }}

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

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

標簽: Vue
相關文章:
主站蜘蛛池模板: 国产v精品成人免费视频400条 | 国产夜色 | 夜精品a一区二区三区 | 美女视频黄免费 | 国产福利精品在线观看 | 成人国产在线看不卡 | 久久久欧美综合久久久久 | 韩国三级日本三级香港三级黄 | 亚洲国产天堂在线网址 | 一区二区免费看 | 日韩欧美视频一区 | www.精品 | 国产下药迷倒白嫩丰满美女j8 | 日韩欧美一区二区三区在线观看 | 国产精品久久久久久久久久98 | 99精品国产在热久久 | 看美国毛片 | 免费观看性欧美毛片 | 欧美另类孕交 | 久久免费小视频 | 久久久久国产精品美女毛片 | a欧美视频| 欧美久久久久久久久 | 久久国产精品久久国产精品 | 色综合精品 | 亚洲欧美日韩精品久久亚洲区 | 国产欧美va欧美va香蕉在线观 | 欧美激情视频一级视频一级毛片 | 玖草视频在线 | 国产成人aaa在线视频免费观看 | 三级色网 | 国产精品二区页在线播放 | 自拍 欧美 在线 综合 另类 | 国产色在线观看 | 免费观看的毛片手机视频 | videos性欧美 | 亚洲午夜色 | 97精品国产91久久久久久久 | 99re思思| 久久―日本道色综合久久 | 色噜噜狠狠大色综合 |