比如有一个外链链接打开我们的项目,链接上带有参数,如:
http://localhost:81/#/order_management/main_order?code=012403191915353432
而因为我们项目中用的时候动态路由,所有的路由都是从后台接口获取的
if(store.getters.permission_routes.length === 0){
const accessRoutes = await store.dispatch('permission/generateRoutes')
router.addRoutes(accessRoutes)
next({ path: to.path})
}else{
next()
}
这个时候外链链接打开项目时是有参数的,但是因为渲染的动态路由,这里渲染完之后,就成了进的路由,参数呗自动替换掉了
所以我们可以用笨方法在这里先获取一下地址栏上的参数
const url = window.location.href
const can = url.split('?')[1]
var obj = {}
if (can) {
const params = can.split('&')
params.forEach(n => {
if (n) {
obj[n.split('=')[0]] = n.split('=')[1]
}
})
}
console.log(obj) // {code: 012403191915353432}
获取到参数了之后, 在添加完动态路由后,再把参数自动加就就可以了
next({
path: to.path,
query: obj,
})
完整的代码
const url = window.location.href
const can = url.split('?')[1]
var obj = {}
if (can) {
const params = can.split('&')
params.forEach(n => {
if (n) {
obj[n.split('=')[0]] = n.split('=')[1]
}
})
}
if(store.getters.permission_routes.length === 0) {
const accessRoutes = await store.dispatch('permission/generateRoutes')
router.addRoutes(accessRoutes)
next({
path: to.path,
query: obj,
})
}else{
next()
}
网友评论