Vue | Router 基於Element-admin動態路由菜單下默認參數


創建動態路由下如何賦值默認參數?

  • 從度娘得知,配置動態路由的文章有很多,但是找了很多沒有找到適合自己的;基於Element-admin配置動態路由,
  • 但是需要從后台配置默認的參數;如下

 

 

  • 下面直接貼代碼說明:

我的系統的動態路由都在permission.js拼接完成的,具體依賴 

import router from './router'

根據具體業務使用  router.addRoutes 添加動態的路由,具體的代碼我相信這樣的文章很完善了

  • 下面就是本文的重點部分,如何配置路由中的參數默認值
  • 我們都知道拼接路由少不了 path、component 、redirect 、meta 等等屬性。
  • 下面上代碼,注意代碼紅色的部分,本文這里利用vue解析props這個方法的時候,將route中的query的進行賦值操作,獲取的時候就可以根據 this.$route.query.屬性名 自行獲取了。

 

 1 function generateRouteStrucChildren(asyncRouterMap, menusChildren) {
 2   for (const menu of menusChildren) {
 3     const permission = {}
 4     permission.path = getRouteName(menu.MODULE_ROUTE)
 5     permission.hidden = !Number(menu.MENU_PROP)
 6     if (menu.children.length) {
 7       permission.component = LayoutNull
 8       permission.redirect = 'noredirect'
 9     }
10     else {
11       permission.component = _import(menu.MODULE_URL + menu.MODULE_OBJ)
12     }
13     // permission.redirect = 'noredirect'
14     permission.name = getRouteName(menu.MODULE_ROUTE)
15     permission.props = route => {
16  getParamters(menu.MODULE_ROUTE, route)
17     }
18     permission.meta = { title: menu.MENU_NAME, icon: menu.MENU_ICON, roles: [], param: getParamters(menu.MODULE_ROUTE) }
19     permission.children = []
20     if (menu.children.length) {
21       // const childMenu = generateRouteStrucChildren(permission.children, menu.children)
22       // permission.children.push(childMenu)
23       generateRouteStrucChildren(permission.children, menu.children)
24     }
25     if (menu.MODULE_ROUTE.indexOf('FundPlanFiles') !== -1) {
26       console.log(permission)
27     }
28     asyncRouterMap.push(permission)
29   }
30 }
31 
32 function getRouteName(router) {
33   if (router && router.indexOf('?') !== -1) {
34     return router.split('?')[0]
35   }
36   return router
37 }
38 
39 /*
40   實現對拼接到路由的參數進行解析,並添加到動態路由
41   realize the analysis of the parameters spliced to the route and add them to the dynamic route
42 */
43 function getParamters(urlStr, route) {
44   var Params = {}
45   var vars = urlStr.split('&')
46   for (var i = 0; i < vars.length; i++) {
47     var pair = vars[i].split('=')
48     if (pair && pair.length === 2) {
49       var propertyName = pair[0].split('?')
50       if (propertyName && propertyName.length > 1) {
51         Params[propertyName[1]] = pair[1]
52         if (route) {
53           route.query[propertyName[1]] = pair[1] 54         }
55       }
56     }
57   }
58   return Params
59 }

 

 

  • 文章中的重點部分,我已經用紅色代碼標注出來的,文章整體不太適用於粘貼黨,粘貼黨需要根據自己的業務進行修改。
  • 以上只是一種方式,還有其他的更好方式,請在評論處留下地址,方便我們共同成長。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM