电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

vue+element使用動(dòng)態(tài)加載路由方式實(shí)現(xiàn)三級(jí)菜單頁面顯示的操作

瀏覽:89日期:2022-12-17 17:48:24

需要用到中間件的方式,這樣就可以實(shí)現(xiàn)了我們想要的方式

publish-center.vue

<template> <router-view></router-view></template><script> export default { }</script>

<el-menu :default-active='$route.path' @open='handleopen' @close='handleclose' @select='handleselect' unique-opened router v-show='!collapsed' > <div @click.prevent='collapse'> <i>|||</i> </div> <template v-for='(item,index) in $router.options.routes' v-if='!item.hidden'><el-submenu :index='index+’’' v-if='!item.leaf'> <template slot='title' ><i :class='item.iconCls'></i>{{item.name}}</template> <el-menu-item-group v-for='(child,indexs) in item.children' :index='child.path' :key='child.path' v-if='!child.hidden'> <!-- <el-menu v-if='!child.path' :default-active='child.path'> --> <el-submenu :index='child.path' v-if='child.z &&!item.leaf'> <template slot='title' class='child_title'><i :class='child.iconCls'></i>{{child.name}}</template> <el-menu-item v-for='(sun,i) in child.children' :index='sun.path' :key='sun.path' > {{sun.name}} </el-menu-item> </el-submenu> <!-- </el-menu> --> <el-menu-item :index='child.path' v-if='!child.z' :key='child.path'> {{child.name}} </el-menu-item> </el-menu-item-group> <!-- <el-menu-item v-if='child.path'>{{child.name}}</el-menu-item> --> <!-- </el-menu-item-group> --> <!-- <el-menu-item v-for='sun in child.children' :index='sun.path' :key='sun.path' v-if='!sun.hidden'> {{sun.name}}</el-menu-item> --> </el-submenu> <el-menu-item v-if='item.leaf&&item.children.length>0' :index='item.children[0].path'><i :class='item.iconCls'></i>{{item.children[0].name}}</el-menu-item> </template></el-menu>

路由部分:

{ path:’/recordQuery’, component:Home, name:’菜單1’, iconCls:’el-icon-search’, children: [ { path: ’carRecord’, z:’1’, component: () => import(’@/page/publish-center.vue’), name: ’菜單2’ , children:[{ path: ’/carRecord/passRecord’, component: passRecord, name: ’菜單’ }, ] }, ]},

補(bǔ)充知識(shí):Vue使用addRouter()動(dòng)態(tài)生成三級(jí)菜單的問題

標(biāo)題記錄一次vue使用addRouter動(dòng)態(tài)生成三級(jí)菜單欄的問題

1.addRouter()里面需要一個(gè)固定格式的數(shù)組:例如

import { asyncRoutes, constantRoutes } from ’@/router’/* Layout */import Layout from ’@/layout’/** * Use meta.role to determine if the current user has permission * @param roles * @param route */function hasPermission(roles, route) { if (route.meta && route.meta.roles) { return roles.some(role => route.meta.roles.includes(role)) } else { return true }}/** * Filter asynchronous routing tables by recursion * @param routes asyncRoutes * @param roles */export function filterAsyncRoutes(routes, roles, parentModules) { const res = [] parentModules.forEach(parentModule => { var tmp = {} tmp.path = parentModule.parentTargetUrl tmp.component = Layout tmp.name = parentModule.parentTargetUrl.substr(1) tmp.meta = {} tmp.meta.title = parentModule.parentModuleName tmp.meta.icon = ’dashboard’ tmp.meta.roles = roles tmp.children = [] parentModule.modules.forEach(module => { // XXXListPage var childrenTmpListPage = {} var childrenTmpEditPage = {} //childrenTmpListPage.path = ’/’ + module.targetName + ’ListPage’ childrenTmpListPage.name = module.targetName + ’ListPage’ childrenTmpListPage.meta = {} childrenTmpListPage.meta.title = module.moduleName childrenTmpListPage.meta.icon = ’dashboard’ childrenTmpListPage.meta.roles = roles //childrenTmpListPage.component = resolve => require([’@/page/’ + module.targetName.charAt(0).toUpperCase() + module.targetName.slice(1) + ’/list_page’], resolve) childrenTmpListPage.path = ’/’ + module.targetName + ’ListPage’ if(module.childrenModules != null && module.childrenModules != undefined && module.childrenModules != ''){ childrenTmpListPage.component = Layout }else{childrenTmpListPage.component = resolve => require([’@/page/’ + module.targetName.charAt(0).toUpperCase() + module.targetName.slice(1) + ’/list_page’], resolve) } childrenTmpListPage.children = [] // XXXEditPage // childrenTmpEditPage.path = ’/’ + module.targetName + ’EditPage’ // childrenTmpEditPage.name = module.targetName + ’EditPage’ // childrenTmpEditPage.meta = {} // childrenTmpEditPage.meta.title = module.moduleName // childrenTmpEditPage.meta.icon = ’dashboard’ // childrenTmpEditPage.meta.roles = roles // childrenTmpEditPage.hidden = true // childrenTmpEditPage.component = resolve => require([’@/page/’ + module.targetName.charAt(0).toUpperCase() + module.targetName.slice(1) + ’/edit_page’], resolve) // 三級(jí)菜單生成 var roleChildren = roles if(module.childrenModules != null && module.childrenModules != undefined && module.childrenModules != ''){ module.childrenModules.forEach(module =>{ var children2TmpListPage = {} var children2TmpEditPage = {} // childrenTmpListPage.path children2TmpListPage.path = module.targetName + ’ListPage’ alert(children2TmpListPage.path) children2TmpListPage.name = module.targetName + ’ListPage’ children2TmpListPage.meta = {} children2TmpListPage.meta.title = module.moduleName children2TmpListPage.meta.icon = ’dashboard’ children2TmpListPage.meta.roles = roleChildren children2TmpListPage.component = resolve => require([’@/page/’ + module.targetName.charAt(0).toUpperCase() + module.targetName.slice(1) + ’/list_page’], resolve) console.log(’@/page/’ + module.targetName.charAt(0).toUpperCase() + module.targetName.slice(1) + ’/list_page’) childrenTmpListPage.children.push(children2TmpListPage)}) } tmp.children.push(childrenTmpListPage) // tmp.children.push(childrenTmpEditPage) }) res.push(tmp) }) console.log(res) return res}const state = { routes: [], addRoutes: []}const mutations = { SET_ROUTES: (state, routes) => { state.addRoutes = routes state.routes = constantRoutes.concat(routes) }}const actions = { generateRoutes({ commit }, obj) { return new Promise(resolve => { let accessedRoutes = filterAsyncRoutes(asyncRoutes, obj.roles, obj.parentModules) commit(’SET_ROUTES’, accessedRoutes) resolve(accessedRoutes) }) }}export default { namespaced: true, state, mutations, actions}

三級(jí)路由重點(diǎn):

componment: 二級(jí)路由不能設(shè)置為NULL,必須存在,我設(shè)置的就是Layout(引用自@/layout)

path:路徑最前面不能使用'/'

以上這篇vue+element使用動(dòng)態(tài)加載路由方式實(shí)現(xiàn)三級(jí)菜單頁面顯示的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 不锈钢列管式冷凝器,换热器厂家-无锡飞尔诺环境工程有限公司 | 广东青藤环境科技有限公司-水质检测 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 西安耀程造价培训机构_工程预算实训_广联达实作实操培训 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 14米地磅厂家价价格,150吨地磅厂家价格-百科 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 步入式高低温测试箱|海向仪器| 重庆中专|职高|技校招生-重庆中专招生网 | 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 圣才学习网-考研考证学习平台,提供万种考研考证电子书、题库、视频课程等考试资料 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 香蕉筛|直线|等厚|弧形|振动筛|香蕉筛厂家-洛阳隆中重工 | 超细粉碎机|超微气流磨|气流分级机|粉体改性设备|超微粉碎设备-山东埃尔派粉碎机厂家 | 利浦顿蒸汽发生器厂家-电蒸汽发生器/燃气蒸汽发生器_湖北利浦顿热能科技有限公司官网 | 广州食堂承包_广州团餐配送_广州堂食餐饮服务公司 - 旺记餐饮 | 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | 茅茅虫AI论文写作助手-免费AIGC论文查重_写毕业论文降重 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 小型手持气象站-空气负氧离子监测站-多要素微气象传感器-山东天合环境科技有限公司 | 贴片电感_贴片功率电感_贴片绕线电感_深圳市百斯特电子有限公司 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 小型铜米机-干式铜米机-杂线全自动铜米机-河南鑫世昌机械制造有限公司 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 合肥角钢_合肥槽钢_安徽镀锌管厂家-昆瑟商贸有限公司 |