AngularJS可以在刷新时监听$ locationChangeSuccess吗?

时间:2013-04-24 19:08:10

标签: javascript angularjs

我正在使用此代码在Angular中收听$ locationChangeSuccess

$scope.$on('$locationChangeSuccess', function(event) {
  console.log('Check, 1, 2!');
});

但是,当我导航到新链接时,它只会在控制台中登录该位置已更改。当然,这是有道理的。我的问题是,如果我刷新页面,怎么能让Angular听取 $locationChangeSuccess

2 个答案:

答案 0 :(得分:32)

您无法在控制器中注册,因为$ locationChangeSuccess在匹配路由并调用控制器之前发生。在您注册时,该事件已被解雇。

但是,您可以在应用程序引导阶段在$ rootScope上订阅该事件:

var app = angular.module('app', []);
app.run(function ($rootScope) {
    $rootScope.$on('$locationChangeSuccess', function () {
        console.log('$locationChangeSuccess changed!', new Date());
    });
});

答案 1 :(得分:6)

你可能想要window.onbeforeunload上的一个监听器,它在窗口卸载它的资源(刷新)之前被调用。