vue-router:防止在参数更改时路由

时间:2017-01-03 02:29:30

标签: javascript vuejs2 vue.js vue-router

我正在尝试确认离开未保存的路线,如果用户拒绝,则取消更改路线。

它主要与

一起使用
beforeRouteLeave: function (to, from, next) { 
                      if (!confirm('Leaving form')) next(false);
                   }

问题在于路由参数,例如#/form-path?id=5 - 更改id参数不会触发beforeRouteLeave

我可以使用哪个钩子来阻止参数更改导航?

1 个答案:

答案 0 :(得分:1)

set专门用于将不同的路径或网址映射到同一路由或组件。因此,改变参数在技术上并不算作离开(或改变)路线,因此beforeRouteLeave不会被解雇。

然而,我建议可以使与路由相对应的组件负责检测参数的变化。基本上,每当参数发生变化时,记录变化然后反转它(希望反转速度足够快以至于用户不会注意到),然后要求确认。如果用户确认更改,则将您的记录用于"反向"改变,但如果用户没有确认,那么保持原样(不要反过来)。

我没有对此进行过个人测试,因此我不保证它可以正常工作,但希望它可以解决关于应用程序的哪个部分负责检查哪些更改的混淆。