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

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

vue addRoutes路由動(dòng)態(tài)加載操作

瀏覽:70日期:2022-12-17 16:50:24

需求:增加權(quán)限控制,實(shí)現(xiàn)不同角色顯示不同的路由導(dǎo)航

思路:每次登陸后請(qǐng)求接口返回當(dāng)前角色路由

核心方法:vue-router2.2.0的addRoutes方法 + vuex

以下是我實(shí)現(xiàn)的獲取菜單路由的方法,我將該方法的調(diào)用放在首頁(yè)組件的生命鉤子中,即便用戶刷新瀏覽器清空了路由還是會(huì)重新調(diào)用接口獲取,不至于會(huì)丟失。同時(shí)考慮到會(huì)有切換用戶的可能,所以不將獲取到的路由信息保存到cookie或者localstorage當(dāng)中

獲取菜單之前先判斷routerState,避免多次請(qǐng)求, 我這里使用element-ui的導(dǎo)航菜單功能v-for循環(huán)this.myRouter參數(shù)即可顯示動(dòng)態(tài)路由導(dǎo)航

/*** 獲取菜單*/getMenu () { if (this.$store.getters.routerState === false) { // 清理已經(jīng)存在的動(dòng)態(tài)路由 this.clearDynamicRoute() // 更改請(qǐng)求路由狀態(tài)為true this.$store.commit(’SET_ROUTERSTATE’, true) getMyMenu().then((res) => { if (res.code === ’0’) { // 格式化路由,將數(shù)據(jù)轉(zhuǎn)為addRoutes可接受的route格式數(shù)組 let myMenu = this.formatMenu(res.data.menu) if (myMenu.length <= 0) { // 沒有動(dòng)態(tài)路由 return } for (let index = 0; index < myMenu.length; index++) { // 將請(qǐng)求的路由先存放到options對(duì)象中 this.$router.options.routes.push(myMenu[index]) } // 將完整需要顯示的路由添加進(jìn)去 this.$router.addRoutes(this.$router.options.routes) // 這里將路由顯示在頁(yè)面上 this.MyRouter = this.$router.options.routes } // 在這里就可以打印出新路由 console.log(this.$router) }) }}

補(bǔ)充知識(shí):vue+element 進(jìn)入不同路由頁(yè)面(二級(jí)頁(yè)面),讓相應(yīng)的左側(cè)菜單

路由配置

{ path: ’/finance’, name: ’Finance’, meta: { title: ’財(cái)務(wù)’ }, component: () => import(’@/components/Finance’), redirect: ’/finance/code/code’, children: [{ path: ’/finance/code’, name: ’financeindex’, meta: { title: ’稅收配置’ }, redirect: ’/finance/code/code’, component: () => import(’@/components/finance/financeindex’), children: [{ path: ’/finance/code/code’, name: ’FinanceCode’, hidden: false, active:’/finance/code’, //這里是在左側(cè)菜單顯示并且需要選中的 meta: { title: ’稅收編碼(金稅)’ }, component: () => import(’@/components/finance/code/Code’), }, { path: ’/finance/code/codeimportrecord’, // 這個(gè)路由進(jìn)入的界面是 稅收編碼(金稅)的二級(jí)頁(yè)面, 當(dāng)進(jìn)入這個(gè)頁(yè)面的時(shí)候,需要菜單中的稅收編碼(金稅)顯示選中 name: ’FinanceCodeImportRecord’, hidden: true, meta: { title: ’稅收編碼導(dǎo)入記錄’ }, component: () => import(’@/components/finance/code/CodeImportRecord’), }, { path: ’/finance/classcode/classcode’, name: ’FinanceClassCode’, hidden: false, active:’/finance/classcode’, //為了省事,只給需要在左側(cè)顯示的路由添加active屬性 meta: { title: ’分類稅收編碼確認(rèn)’ }, component: () => import(’@/components/finance/classCode/ClassCode’), }, ] }, ]

element

<template> <div class='leftnav'> <!--<div class='' v-for='nav in navs'> <div class='LiHeader'> {{nav.name}} </div> <li v-for='item in nav.san'> {{item.name}} </li> </div>--> <el-menu :default-active=this.show // 這是的值是指與 el-menu-item中:index的值對(duì)應(yīng)的那一天顯示選中(正常情況就是一個(gè)頁(yè)面一個(gè)路由,進(jìn)入那個(gè)路由,對(duì)應(yīng)的導(dǎo)航菜單需要選中) @open='handleOpen' @close='handleClose' background-color='#282b33' text-color='#bcbcbc' active-text-color='#ffffff'> <div class='' v-for='(nav,index) in navs' :key='index' style='width: 200px;'> <div class='' style='color: #ffffff;height: 40px;line-height: 40px;padding-left: 20px;font-size: 16px;'> {{nav.meta.title}} </div> <el-menu-item @click='clickroute(item.path)' v-for='(item,index) in nav.children' v-if='!item.hidden' :key='index' :index='item.active'(這里原來是item.path) style='height: 40px;line-height: 40px;'>{{item.meta.title}}</el-menu-item> </div> </el-menu> </div></template><script>

js

data() { return { navs:[], show:null //初始化上面:default-active綁定的值 } }, created() { //// 頁(yè)面載入的時(shí)候,拿到url,用/拆開,然后拼起來前兩個(gè)路徑,并且賦值, 這個(gè)時(shí)候show對(duì)應(yīng)的就是路由表中的 avtive, let route=this.$route.path.split(’/’) let vueRouter=this.$router.options.routes.filter(router=>{return router.path==’/’})[0].children let filterVuerouter=vueRouter.filter(router=>{return ’/’+route[1] == router.path }) this.navs=filterVuerouter[0].children console.log(this.navs) let router =’/’+route[1]+’/’+route[2] console.log(router) this.show=router// console.log(this.show) }, mounted() { },

以上這篇vue addRoutes路由動(dòng)態(tài)加載操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 亚洲美女在线观看亚洲美女 | 在线观看的毛片 | 国产成人精品区在线观看 | 国产亚洲精品午夜一区 | 在线视频精品视频 | 中文精品爱久久久国产 | 亚洲精品美女在线观看 | 久久精品国产99久久6动漫欧 | 中国一级做a爱片免费 | 日本丶国产丶欧美色综合 | 一区二区三区观看 | 国产亚洲精品午夜一区 | 九九九九热精品视频 | 亚洲伊人色| 久久久久综合国产 | 亚洲国产精品线在线观看 | 高清精品女厕在线观看 | 手机看片国产免费永久 | 国产一级免费 | 一区二区在线欧美日韩中文 | 伊人55影院 | 国产成人美女福利在线观看 | 久久公开视频 | 午夜精品久久久久久99热7777 | 特级aaa片毛片免费观看 | 欧美亚洲精品一区 | 国产男女爽爽爽爽爽视频 | 成人欧美视频在线观看 | 欧美综合视频在线观看 | 日本三级午夜 | 成人三级做爰在线视频 | 欧美成人精品在线 | 在线91精品亚洲网站精品成人 | 欧美成人午夜在线全部免费 | 国产无套视频在线观看香蕉 | 欧美一级片在线看 | 日韩视频在线观看一区二区 | 91精品啪在线看国产网站 | 暖暖免费高清日本一区二区三区 | 精品久久看 | 免费又黄又爽的视频 |