【问题标题】:Angular JS $on "$locationChangeStart" triggered twice when event.preventDefault()Angular JS $on "$locationChangeStart" 触发了两次 event.preventDefault()
【发布时间】:2014-03-27 11:00:53
【问题描述】:

我正在尝试在 Angular JS 中侦听 $on "$locationChangeStart" 事件并防止该事件在某些情况下发生。 一旦我执行 event.preventDefault(),$on "$locationChangeStart" 事件就会再次被触发。 这是一个 Angular JS 错误吗?

$rootScope.$on "$locationChangeStart", (event, next, current) ->
  if doNotLeave
    event.preventDefault()

提前致谢, 斯特夫

【问题讨论】:

  • event.stopPropagation() 有什么作用?
  • 发生这种情况时,您使用的是什么路由?
  • 这个问题解决了吗?

标签: javascript angularjs


【解决方案1】:

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

【讨论】:

  • 非常有帮助的问答。我相信只有在使用本机脚本设置哈希时才会出现此问题。使用有角度的 $location 对象永远不会双降(并且总是添加斜线)。
  • 经过进一步审查,我没有看到斜线,而是双井号。
  • 我遇到了与您在此处描述的完全相同的问题。我想知道当你说“一旦我们考虑到这一点”时你的解决方案是什么,这意味着你是如何阻止它首先添加斜杠的?
  • 不幸的是,我不记得我们的确切解决方案(或问题所在),但我们可能做了类似 if(next == current + '//'){ do防止问题发生的东西}
猜你喜欢
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
  • 2019-05-23
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多