使用浏览器后,Angular $位置不会更新

时间:2016-01-14 22:11:01

标签: javascript angularjs back-button angular-routing

有没有人遇到过这种行为?关于它没有多少提及,其他帖子本质上是不同的。这似乎与浏览器行为的文档不一致。

  

当用户

时,将URL与浏览器同步      
      
  • 更改地址栏。
  •   
  • 点击后退或前进按钮(或点击历史记录链接)。
  •   
  • 点击链接。
  •   
     

https://docs.angularjs.org/api/ng/service/ $位置#!

会发生什么:

这是一个有助于调试的观察者:

// listen for the event in the relevant $scope
$rootScope.$on('locationChange', function (event, data) {
    console.log(data);
});

//Call locationChange watch at anytime the page is loaded 
$scope.$emit('locationChange', $location.$$path);

这是路由:

$routeProvider
    .when('/guide', {
        templateUrl: 'views/guide.html',
        controller: 'GuideController',
        controllerAs: 'guide'
    })
    .when('/', {
        templateUrl: 'views/about.html',
        controller: 'AboutCtrl',
        controllerAs: 'about'
    })
    .otherwise({
        redirectTo: '/'
    });

1 个答案:

答案 0 :(得分:1)

我是如何解决这个问题的:

var pop = 0;

window.onpopstate = function(event) {
    if (document.location.pathname === '/' && pop > 1) {
        pop = 0;
        document.location = 'http://localhost:9000/';
    }
    pop++;
};