我知道这会导致问题,好像我要将window.location.href/reload
更改为$location.path()
,它运作正常。 现在,我在运行代码时没有看到任何性能错误(可用性)开玩笑,这会破坏IE中的应用程序,但在使用window
时可以在Chrome中运行。
我正在做的是在用户登录/退出时强制某些更新反映在网站上,为此我需要在更改路由后刷新页面。使用$location.path
和$state.go
更改我的网址,但不要重新加载/刷新页面以反映网站更新。
AngularJS是否有任何方法可以本地重定向和重新加载路由/页面而不会出现此循环警告/错误?或者有没有办法仍然使用window.location.href/reload
,现在让AngularJS吓坏了?
错误
错误:[$ rootScope:infdig] 10 $ digest()迭代达成。中止!
Watchers在最后5次迭代中被解雇:[[“fn:function $ locationWatch(){\ n var oldUrl = $ browser.url(); \ n var currentReplace = $ location。$$ replace; \ 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} else {\ n
$ browser.url($ location.absUrl(),currentReplace); \ n
afterLocationChange(oldUrl); \ n} \ n}); \ n} \ n
$ location。$$ replace = false; \ n \ n返回changeCounter; \ n}; newVal:8; oldVal:7“,”fn:function(context){\ n try {\ n
for(var i = 0,ii = length,part; i
然后在以下开头有一段长的错误:
[$ rootScope:infdig] 10 $ digest()迭代达成。中止! 观察者在最近5次迭代中被解雇....
答案 0 :(得分:1)
您可以尝试替换setTimeout中的href。这对我的情况有帮助。
$setTimeout(function() { $window.location.href = newUrl; }, 500);
答案 1 :(得分:0)
$state
实际上有reload()
函数可以完成此操作:
$state.reload();
您可以在ui-router $ state docs中阅读相关内容。
如果您还需要重定向,可以通过将reload: true
选项传递给$state.go()
来强制重新加载状态转换:
$state.go('stateName', {}, {reload: true});