我正在创建约定的日程安排,并希望在约定时间内更改URL。如果用户在骗局的星期六加载页面,则URL应更改为[URL]?day = saturday。(当用户点击查看不同的日期时,URL也会更改)
我在页面加载时遇到问题,其中history.replaceState正在导致
angular.js:13920 Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
所以我遇到了一个说使用类似
的论坛$location.path('/').search('day='+day).replace();
但它出现了
/#/?day=saturday
我不想要URL中的/#。所以我发现论坛解释使用$ locationProvider。
我甚至在
中添加了app.config(function($locationProvider) {
$locationProvider.html5Mode(true);
})
它仍然说没有定义$ locationProvider。我不知道我做错了什么,或者这是否是正确的方向。我只想在页面加载时以及当用户点击更改日期时更改?day = day_here。
答案 0 :(得分:0)
在路由时捕获路由更改并替换网址。对于错误使用和您的语法似乎是正确的
.config(function($locationProvider) {
$locationProvider.html5Mode(true).hashPrefix('!');
})
但是如果您想要保持网址更改,则必须在routeChange中对网址进行更改
.run(function($rootScope, $location) {
$rootScope.$on('$routeChangeStart', function(next, current) {
//... you could trigger something here like replacing the actual url ...
//$location.path('/').search('day='+day).replace();
});
})
或者您也可以查看https://github.com/angular-ui/ui-router作为替代方案并对onEnter中的$ location.url()。replace()进行更改或解析状态定义https://github.com/angular-ui/ui-router/wiki的选项
如果您想使用ngRouter并仍然收到错误,那么demo的plunkr代码肯定会有助于更好地进行调试。