Javascript 角JS$on"$位置更改开始“;当event.preventDefault()时触发两次

Javascript 角JS$on"$位置更改开始“;当event.preventDefault()时触发两次,javascript,angularjs,Javascript,Angularjs,我试图在Angular JS中侦听“$locationChangeStart”事件上的$on,并防止该事件在某些情况下发生。 一旦执行event.preventDefault(),“$locationChangeStart”事件上的$on将再次触发。 这是一个有角度的JS错误吗 $rootScope.$on "$locationChangeStart", (event, next, current) -> if doNotLeave event.preventDefault()

我试图在Angular JS中侦听“$locationChangeStart”事件上的$on,并防止该事件在某些情况下发生。 一旦执行event.preventDefault(),“$locationChangeStart”事件上的$on将再次触发。 这是一个有角度的JS错误吗

$rootScope.$on "$locationChangeStart", (event, next, current) ->
  if doNotLeave
    event.preventDefault()
提前感谢,,
Steff

好的,我看到了一个非常类似的情况,并找到了一个可能的原因。 Angular(或我们的自定义路由段路由,不确定是哪个)有时会在路由处理URL后修剪URL。
尝试记录
next
current
并查看您正在处理的具体路线。在我们的案例中,变化来自此
http://wof/Admin#/someRoute
http://wof/Admin#/someRoute/
(注意添加了斜杠)。在我们解释了这一点之后,它工作正常。

event.stopPropagation()做什么?发生这种情况时,您使用了什么路由?这个问题解决了吗?非常有用的问题和答案。我相信,只有使用本机脚本设置哈希,才会出现此问题。使用角度$location对象永远不会出现两次倾斜(并且总是添加斜线)。进一步查看后,我看到的不是斜线,而是一个双磅符号。我遇到的问题与您在这里描述的完全相同。我想知道当你说“一旦我们考虑到这一点”,你的解决方案是什么,意思是你是如何阻止它首先添加斜杠的?不幸的是,我不记得我们有什么确切的解决方案(或者这个问题),但我们可能做了一些类似于if(next==current+'/'){做一些防止问题发生的事情}