window.location.href/reload导致AngularJS[$rootScope:infdig]达到1

window.location.href/reload causing AngularJS [$rootScope:infdig] 10 $digest() iterations reached

本文关键字:rootScope infdig 达到 href location reload AngularJS 导致 window      更新时间:2023-09-26

我知道这是造成问题的原因,就好像我要将window.location.href/reload更改为$location.path()一样,它运行得很好现在,我在运行代码时没有看到任何性能错误(可用性)开玩笑,这会破坏IE中的应用程序,但在使用window时可以在Chrome中工作。

我所做的是在用户登录/注销时强制一些更新反映在网站上,为此,我需要在更改他们的路线后刷新页面。使用$location.path$state.go更改我的URL,但不重新加载/刷新页面以反映网站更新。

AngularJS是否有任何方法可以在不收到此循环警告/错误的情况下以本机方式重定向和重新加载路由/页面?或者有没有办法仍然使用window.location.href/reload,现在却让AngularJS抓狂?

错误

错误:已达到[$rootScope:infdig]10$digest()迭代。正在中止!

在最近5次迭代中激发的观察者:[["fn:函数$locationWatch(){''n var oldUrl=$browser.url();''n varcurrentReplace=$location$$代替''n''n if(!changeCounter||oldUrl!=$location.absUrl()){''n changeCounter++;''n
$rootScope$evalAsync(function(){''n if($rootScope.$broadcast('$locationChangeStart',$location.absUrl(),oldUrl)。''n defaultPrevented){''n
$location$$parse(oldUrl);''n}其他{''n
$browser.url($location.absUrl(),currentReplace);''n
afterLocationChange(oldUrl);''n}''n});''n}''n
$location$$replace=false;''n ''n return changeCounter;''n};newVal:8;oldVal:7","fn:函数(上下文)对于(var i=0,ii=长度,部分;i

然后在那些以开头的下面有一个很长的错误

[$rootScope:infdig]已达到10$digest()迭代。正在中止!观看者在最近5次迭代中被解雇。。。。

您可以尝试在setTimeout中替换href。这对我的情况有所帮助。

$setTimeout(function() { $window.location.href = newUrl; }, 500);

$state实际上有一个reload()函数可以做到这一点:

$state.reload();

你可以在ui router$state文档中了解到这一点。

如果您也需要重定向,您可以通过将reload: true选项传递给$state.go():来强制在状态转换时重新加载

$state.go('stateName', {}, {reload: true});