与beforeRouteLeave,vue-router

时间:2017-07-10 20:24:23

标签: vue.js vue-router

我希望有人可以通过使用vue-router在一个特定路线上的导航菜单上给我一些想法。创建一个jFiddle来重现这一点是不可能的,所以我希望描述就足够了。

我有一个标准的vue-cli生成设置,在我的App.vue文件中有一个router.js和一个导航菜单,大部分时间它都可以正常工作。但是,导航到一个特定的路线后,菜单变得完全没有响应 - 即,选择另一个菜单项什么都不做,它不会把我带到不同的路线。

我能想到的唯一可以解释这一点的是“之前的路线”。我已经到位了,例如,如果' next'没被打电话。事实上,一旦我进行了一些记录,它就显示出对我来说完全无法解释的行为。这是我之前的路线保留'对于有问题的组件:

    beforeRouteLeave (to, from, next) {
      console.log("Running beforeRouteLeave");
      if (this.editMode && this.isDirty(this.sale)) {
        console.log("beforeRouteLeave: showing leave confirmation");
        bootbox.confirm("Leave without saving?", (result) => {
          if (result) {
            next();
          }
        });
      } else {
        console.log("beforeRouteLeave: going to next()");
        next();
      }
   }

当导航无效时,控制台只显示" Running beforeRouteLeave"信息。但这对我来说很神秘,因为我之后会立即进行if / else测试,其中两个分支都涉及到打印到控制台的消息。肯定必须打印" beforeRouteLeave:显示请假确认"或" beforeRouteLeave:转到next()"。但它既没有打印,也没有改变路线(所以我假设已经有效地中止了)。会发生什么事?

1 个答案:

答案 0 :(得分:0)

问题解决了!我跑了一个&n; npm更新'将所有软件包(vue,vue-router等)更新到最新版本,现在一切正常。很明显旧版本中的一些错误。仍然对如何不执行某些代码感到困惑,但我现在可以继续前进。