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 }

 

 

  • 文章中的重点部分,我已经用红色代码标注出来的,文章整体不太适用于粘贴党,粘贴党需要根据自己的业务进行修改。
  • 以上只是一种方式,还有其他的更好方式,请在评论处留下地址,方便我们共同成长。

 

 

posted @ 2020-12-13 17:28  一直傲娇的鲨鱼  阅读(3869)  评论(0编辑  收藏  举报