我有一个使用手动引导程序的角度应用程序,因此我们可以在应用程序启动之前加载依赖项。此应用程序也使用UI路由器。
似乎当我们在Internet Explorer上引导应用程序时,我们的代码缩小了,当应用程序引导时会发生无限的摘要循环。无限的摘要循环发生在UI-Router的某处,我将其缩小到以下代码片段之一(我认为)。
$urlRouterProvider.otherwise(function ($injector, $location) {
var $state = $injector.get("$state");
$state.go("defaultState");
});
在另一部分:
$rootScope.$on('$locationChangeSuccess', function (e) {
e.preventDefault();
if (hiSessionStorage.get('retry')) {
$location.url("/" + hiSessionStorage.get('retry'));
hiSessionStorage.remove('retry');
}
$urlRouter.sync();
});
上面的代码,$locationChangeSuccess
函数不断受到攻击,我确信它与无限摘要有关。
我知道这是一个相当普遍的问题,有些人已经能够以各种方式解决它。我尝试过这里最常见的概述:
https://github.com/angular-ui/ui-router/issues/600
但是上面的代码使用了这种技术并且它不起作用。
我也尝试过这种技术:
使用实际的“其他”状态而不是重定向,但没有运气。
另外,我试图将e.preventDefault();
和$urlRouter.sync();
放在$locationChangeSuccess
监听器中的if语句中,但这搞砸了其他一些东西,所以我不是能够做到这一点。
我有一个解决方案(解决方法)来解决这个问题,我希望将其作为答案发布(如果没有其他人在我能够之前就已经回答了这个问题),因为在找到解决方法之前我花了两天时间坚持这个问题并希望别人不会分享我所经历的痛苦。