【问题标题】:Push route to parent component inside a function (Vue)将路由推送到函数内的父组件(Vue)
【发布时间】:2021-05-21 12:16:54
【问题描述】:

我觉得我遗漏了一些非常明显的东西,但我无法弄清楚。请帮忙! 我定义了以下路线:

const routes = [
  {
    path: '/',
    name: 'Login',
    component: () => import('../views/Login.vue'),
    meta: {
      authRedirect: true
    }
  },
  {
    path: '/companies',
    name: 'Companies',
    component: () => import('../views/Companies.vue'),
    meta: {
      requiresAuth: true
    }
  },
  {
    path: '/companies/:id',
    name: 'Company',
    component: () => import('../views/Company.vue'),
    meta: {
      requiresAuth: true
    }
  },
  {
    path: '*',
    name: '404',
    component: () => import('../views/404.vue')
  }
]

然后我的组件中有以下内容:

export default {
  name: 'Company',
  data() {
    return {
      company: {}
    }
  },
  methods: {
    getCompanyDetails: function() {
      let self = this
      axios.get('/api/companies/' + this.$route.params.id).then(function(response) {
        self.company = response.data
      }).catch(function() {
        self.$router.push('companies')
      })
    }
  },
  created() {
    this.getCompanyDetails()
  }
}

如果 API 返回数据,基本上一切正常,但在 catch 函数中,我试图将路由推回 /companies。但它正在重定向到 /companies/companies。如何将其重定向到正确的路线?

【问题讨论】:

  • 你缺少正斜杠..self.$router.push('/companies')

标签: vue.js routes vue-router router


【解决方案1】:

您是否尝试过$router.push('/companies')(路径中有/)?

另外,如果你想让它更清楚,你可以使用$router.push({ name: 'Companies' }),它将匹配你路由中定义的name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2019-12-14
    • 1970-01-01
    • 2020-02-16
    • 2020-05-12
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多