$ router.push不尊重路由元字段

时间:2017-08-01 04:03:39

标签: vue.js vuejs2 vue-router

使用$router.push时如此:

this.$router.push({name: 'Home'})

...似乎我的路线元字段未被识别。这是我的路线元字段以及我如何称呼它们:

路线元字段

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    // this route requires auth, check if logged in
    // if not, redirect to login page.
    if (!auth.user.authenticated) {
      next({
        path: '/login'
      })
    } else {
      next()
    }
  } else {
    next() // make sure to always call next()!
  }
})
router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.preventAdmin)) {
    // this route shouldn't be available for admin, check role
    // if so, redirect to admin area.
    if (auth.user.role === '1') {
      next({
        path: '/admin/users'
      })
    } else {
      next()
    }
  } else {
    next() // make sure to always call next()!
  }
})

路线

routes: [
  {
   path: '/',
   name: 'Home',
   component: Home,
   meta: { requiresAuth: true, preventAdmin: true }
  },
]

如果我在特定路线上刷新,他们会按预期工作。

在使用$router.push时,我是否必须采取措施确保我的路线元字段有效?

1 个答案:

答案 0 :(得分:0)

您可以构建路由器视图:

<router-view :key="$route.path"></router-view>

与页面路由上的页面刷新达到相同的结果(至少对于路由器视图的内容)。我希望能够做到这一点,但如果它没有,请告诉我。