我知道这是造成问题的原因,就好像我要将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});