首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue-router -如何中止beforeRouteEnter中路由更改

vue-router -如何中止beforeRouteEnter中路由更改
EN

Stack Overflow用户
提问于 2017-09-26 04:05:38
回答 1查看 5.8K关注 0票数 2

我在vue.js/vue-router的beforeRouteEnter导航守卫中看到了一些我不理解的行为。我从文档中了解到这个守卫“没有访问this组件实例的权限”,但是如果您需要访问组件实例,可以通过回调的方式来实现。我之所以这样做,是因为如果其中一个属性尚未定义(通常是因为用户单击了前进按钮),我希望中止路线更改。这就是我所拥有的:

代码语言:javascript
复制
beforeRouteEnter(to, from, next) {
  console.log("ProductDetail: routing from = "+from.path+" to "+to.path);

  next(vm => {
    if (!vm.product) {
      console.log("Product empty: routing back one page");
      vm.$router.go(-1);
    }
  });
},

这个想法是,我测试这个prop是否存在,如果它无效,就返回(否则中止路由更改)。从控制台日志中,我可以看到,实际上正在创建组件实例,可能是因为调用了回调,并抛出了一系列错误,然后vm.$router.go(-1)才启动并将用户带回上一个屏幕。

那么,如果有什么事情的话,我可以做什么来实际阻止路由更改完成,如果其中一个必要条件不存在,如果在我可以测试它的时候为时已晚?

EN

回答 1

Stack Overflow用户

发布于 2017-09-26 11:39:41

你可以试试这段代码

代码语言:javascript
复制
beforeRouteEnter(to, from, next) {
  // Your code
  next(vm => {
    if (!vm.product) {
      console.log("Product empty: routing back one page");
      next(from)
    }
  });
}

你可以在https://router.vuejs.org/en/advanced/navigation-guards.html中阅读更多关于这个守卫的信息

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46413335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档