页面加载时的角度更改URL

时间:2016-10-28 04:17:38

标签: angularjs

我正在创建约定的日程安排,并希望在约定时间内更改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。

1 个答案:

答案 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代码肯定会有助于更好地进行调试。