1

在我的角度应用程序中,我遇到了这个问题。当用户快速双击指向状态的链接(ui-sref 链接)时,目标状态开始加载两次。如果状态窗口没有冻结并停止响应其他状态更改,这将是可以忍受的。单击另一个 ui-sref 链接时,URL 会相应更改,在后台进行 http 调用,但视图被冻结。

我需要知道,当有另一个过渡已经在尝试解决承诺时,我该如何防止任何过渡。我知道我可以通过 $stateChangeStart 和 event.preventDefault() 以某种方式发挥作用。我不知道的是如何让我的过渡在解决它的解析块后继续进行,以及如何对应 event.preventDefault()。

谢谢你的时间。任何建议将不胜感激。

4

1 回答 1

1

Angular UI Router 的 $state 对象上有一个属性,“transition”,如果它处于活动转换的中间,它将出现。一种选择是删除 ui-sref 属性并改用 ng-click 属性。在您的 ng-click 函数中,您可以在调用 $state.go() 之前手动检查转换对象的存在。

HTML:

<a ui-sref="Root.State1">

HTML:

<a href="" ng-click="goToStateOne()">

JS:

scope.goToStateOne = function() {
  if (!$state.transition) $state.go('Root.State1');
}
于 2017-05-02T01:07:59.503 回答