我有一组看起来像这样的路线,其中语言是可选的。如果未设置,则默认为英语:
现在,我想使用router-link
元素生成路由。
<router-link :to="{
name: 'search-map',
params: { language: $language }
}">
testlink
</router-link>
这可行,但是语言是我已经在Vue中全局设置的。显然,我不想一直在router-link
上传递参数,而要自动完成此操作。
我尝试使用导航护罩,但这似乎不起作用:
router.beforeEach((to, from, next) => {
to.params.language = Vue.prototype.$language;
next();
});
是否有另一种方法可以完成此操作,因此不必在每个router-link
上都指定语言参数?还是导航卫士应该工作?
答案 0 :(得分:1)
如果to
不包含参数language
,将其添加到next()
router.beforeEach((to, from, next) => {
if (!to.params.hasOwnProperty('language')) {
next({
...to,
params: {
...to.params,
language: Vue.prototype.$language
}
})
} else {
next()
}
})