Javascript window.location.href/reload导致AngularJS[$rootScope:infdig]10$digest()迭代次数达到

Javascript window.location.href/reload导致AngularJS[$rootScope:infdig]10$digest()迭代次数达到,javascript,angularjs,window.location,Javascript,Angularjs,Window.location,我知道这是导致问题的原因,就好像我要将window.location.href/reload更改为$location.path(),它可以正常工作。现在,我在运行代码时没有看到任何性能错误(可用性)只是开玩笑,这会破坏IE中的应用程序,但在Chrome中使用window 我正在做的是,当用户登录/注销时,强制对站点进行一些更新,要做到这一点,我需要在更改他们的路径后刷新页面。使用$location.path和$state.go更改我的URL,但不要重新加载/刷新页面以反映网站更新 Angular

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

我正在做的是,当用户登录/注销时,强制对站点进行一些更新,要做到这一点,我需要在更改他们的路径后刷新页面。使用
$location.path
$state.go
更改我的URL,但不要重新加载/刷新页面以反映网站更新

AngularJS有没有办法在没有收到循环警告/错误的情况下,以本机方式重定向和重新加载路由/页面?还是有办法继续使用
window.location.href/reload
现在让AngularJS崩溃

错误

错误:[$rootScope:infdig]已达到10$digest()次迭代。流产

在最近5次迭代中触发的观察者:[“fn:function $locationWatch(){\n var oldUrl=$browser.url();\n var currentReplace=$location.$$replace;\n\n如果(!changeCounter|| oldUrl!=$location.absUrl()){\n changeCounter++;\n
$rootScope.$evalAsync(函数(){\n如果 ($rootScope.$broadcast(“$locationChangeStart”,$location.absUrl(), oldUrl)。\n defaultPrevented){\n
$location.$$parse(oldUrl);\n}else{\n
$browser.url($location.absUrl(),currentReplace);\n
afterLocationChange(旧URL);\n}\n});\n}\n
$location.$$replace=false;\n\n返回changeCounter;\n}; newVal:8;oldVal:7”,“fn:function(context){\n try{\n
对于(变量i=0,ii=长度,部分;i 然后,在以以下开头的段落下面有一个较长的错误:

[$rootScope:infdig]10$digest()迭代已达到。正在中止! 观察者在过去5次迭代中被激发


$state
实际上有一个
reload()
函数来执行以下操作:

$state.reload();

您可以在ui路由器$state中了解它

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


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

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

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

那么,我是否需要添加ui路由器,就为了这一项功能?您的问题提到使用
$state.go()
,我假设您已经在使用它。如果不需要,Angular还提供了提供类似功能的
$route
服务。将其插入控制器,然后调用
$route.reload()
您需要的地方。我已尝试在控制器中放入
$route.reload
,但它从未触发:/