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

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

vue Element左側無限級菜單實現

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

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

梳理遞歸數據

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

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

我們從后臺拿到的是這種扁平化處理數據,那我們實現遞歸菜單的話需要什么數據格式呢,需要格式如下:

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

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

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

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

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

數據處理就要開始寫代碼了!

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

老規矩,程序員交流用代碼

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> 這里的激活樣式用的是緩存的辦法 // 保存鏈接的激活狀態 saveNavStart(activePath) { window.sessionStorage.setItem('activePath', activePath); this.activePath = activePath; }, created() { this.activePath = window.sessionStorage.getItem('activePath'); }

menuTree.vue組件

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

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

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

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

標簽: Vue
相關文章:
主站蜘蛛池模板: 国产亚洲欧美日韩在线看片 | 亚洲伊人色一综合网 | 日本一级特黄啪啪片 | 偷拍第1页| 国产一级大片免费看 | 全球成人网 | 精品国产区 | a级毛片免费高清视频 | 日韩一级a毛片欧美一级 | 亚洲欧美国产精品专区久久 | 另类视频区第一页 | 中文无线乱码二三四区 | 最新欧美精品一区二区三区不卡 | 福利姬在线精品观看 | 成人在线不卡视频 | 91青青国产在线观看免费 | 久久精品成人国产午夜 | 另类视频一区 | 免费一级成人毛片 | 国产综合精品久久久久成人影 | 日本色哟哟 | 男人天堂中文字幕 | 午夜伦y4480影院中文字幕 | 国产成人18黄网站免费网站 | 亚洲美色综合天天久久综合精品 | 精品精品国产高清a毛片 | 欧美成人免费全网站大片 | 大尺度福利视频在线观看网址 | 国产特黄一级一片免费 | 成人高清无遮挡免费视频软件 | 男人一进一出桶女人视频 | 免费国产成人高清在线观看视频 | 一级做a爱视频 | 亚洲欧美一区二区视频 | 亚洲精品一区二区三区中文字幕 | 国产精品在线观看 | 亚洲视频三区 | 99秒拍福利大尺度视频 | 久在线观看 | 日本加勒比在线观看 | 美女18网站|