0

谁能告诉我是否有办法直接在路由对象内访问路由参数?,我需要根据路由对象需要不同的组件。

router.map({
  '/dashboard/*': {
    component: Home
  },
  '/dashboard/:module': {
    component: Module,
    subRoutes: {
      '/': {
        component: require('./components/'+this.$route.params.module+'.vue')
      },
      '/:tab': {
        component: require('./components/'+this.$route.params.tab+'.vue')
      }
    }
  }
});
4

2 回答 2

3

您不能直接在路由器配置中根据路由参数要求一个或另一个组件。您可以做的是创建一个包装组件,该组件将根据路由参数使用一个或另一个组件,因为路由参数可以从任何组件访问。

vue-router 文档中所述:

路由对象将作为 this.$route 注入到启用 vue-router 的应用程序中的每个组件中,并且将在执行路由转换时更新。

您的每个组件都可以访问当前路由,this.$route因此您可以执行以下操作:

<template>
    <component-a v-if="$route.params.param1 === 'a'></component-a>
    <component-b v-if="$route.params.param1 === 'b'></component-b>
</template>
于 2016-09-29T09:07:40.157 回答
2

我还没有看到$route.params路由对象内部的使用。你可以做什么,在你的 vue 中你可以根据你的动态加载不同的组件$route.params

<component-a v-if="$route.params == 'a'"></component-a>
于 2016-09-29T05:57:21.940 回答