我在使用带有Angular的HTML 5 History API时遇到问题:
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: [["fn: $locationWatch; newVal: 8; oldVal: 7"],["fn: $locationWatch; newVal: 9; oldVal: 8"],["fn: $locationWatch; newVal: 10; oldVal: 9"],["fn: $locationWatch; newVal: 11; oldVal: 10"],["fn: $locationWatch; newVal: 12; oldVal: 11"]]
然后我搜索了解决方案,并且我发现这是已知问题。只有"解决方案"我设法找到了,包括在setTimeout函数中的历史API,smth。像这样:
setTimeout(function() {
history.pushState({}, "progress", url);
},1000);
一位用户提到这也适用于他:
$browser.url( state.url );
history.replaceState({}, state.title, state.url );
但我没有运气。 $ browser是Angular的私有API,$ location使用,有趣的是,如果我做的话。像这样:
var url = $browser.url() + "/progress";
$browser.url(url,true);
console.log(window.location.href);
我的新网址已被记录,但我看不到地址栏中的更改,即显示$ browser.url()。 (在Chorme中,这个程序会暂时显示,然后消失)
这可能是由于我的服务器端路由配置吗? (我使用ASP.net MVC)。
我的问题是,除了setTimeout之外,有没有人有$浏览器运气或找到解决这个问题的方法?