本文主要介绍的是:一开始 路由写死了,但是在页面跳转的过程中需要动态增加路由(传参)的情况。
step1: 写死的路由。
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
export const constantRoutes = [
{
path: '/login',
component: () => import('@/views/login/index'),
hidden: true
},
{
path: '/service',
component: Layout,
redirect: '/service/list/list',
name: 'Service',
meta: { title: '服务管理', icon: 'example' },
children: [
{
path: 'list',
name: 'ServiceManage',
component: () => import('@/views/service/serviceManage'),
children: [
{
path: 'list',
name: 'ServiceList',
component: () => import('@/views/service/serviceList'),
meta: { title: '服务列表' }
}
]
},
{
path: 'log',
name: 'Log',
component: () => import('@/views/service/log'),
meta: { title: '监控日志' }
}
]
},
]
const createRouter = () => new Router({
routes: constantRoutes
})
const router = createRouter()
export default router
step2:动态增加路由(本文重点)
主要目的是:写死的路由中不能传递参数,如果有传参这样的需求,用这种方式还是很容易实现的,比如:需求需要 路由中的title是可变的。
this.$router.addRoutes([{
path: '/service',
component: Layout,
redirect: '/service/list/list',
name: 'Service',
meta: { title: '服务管理', icon: 'example' },
children: [
{
path: 'list',
name: 'ServiceManage',
component: () => import('@/views/service/serviceManage'),
children: [
//此处为动态增加的路由
{
path: 'monitor',
name: 'Monitor',
component: () => import('@/views/service/monitor'),
hidden:true,
//title中可以传参数
meta: { title: '查看监控-'+row.serviceId+'-'+row.adminInstanceId }
}
]
}
]
}])
this.$router.push(
{ path: 'monitor',
query: {adminInstanceId: row.adminInstanceId}
}
)
这样子,需要增加的动态路由就添加到了 节点/service 的子路由的子路由上。
如有更好的方法,欢迎讨论交流。