使用全局语言参数构建路由器链接

时间:2018-06-21 08:06:28

标签: vue.js vuejs2 vue-router

我有一组看起来像这样的路线,其中语言是可选的。如果未设置,则默认为英语:

  • /搜索
  • / nl / search /
  • / de / search /

现在,我想使用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上都指定语言参数?还是导航卫士应该工作?

1 个答案:

答案 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()
  }
})