【问题标题】:Can AngularJS listen for $locationChangeSuccess on refresh?AngularJS 可以在刷新时监听 $locationChangeSuccess 吗?
【发布时间】:2013-04-25 08:12:27
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您不能在控制器内注册,因为 $locationChangeSuccess 发生在路由匹配和调用控制器之前。在您注册时,该事件已被触发。

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

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

    【讨论】:

    • 知道返回的是什么类型的参数吗?
    • 有没有办法在$locationChangeSuccess的函数内部获取URL中传递的状态参数。 $stateParams 打印出来时返回空
    【解决方案2】:

    您可能希望在 window.onbeforeunload 上设置一个侦听器,该侦听器在窗口卸载其资源(刷新)之前被调用。

    【讨论】:

    • 很好的答案。我想我会选择 Sly's,只是因为它看起来是 Angular 的方式。不过,我再次感谢您的帮助!
    • 我怀疑这是否有效,因为当 Angular 处理 URL 时页面不会刷新。 Angular 会“替换”当前页面的内容。没有重新加载,所以没有 window.onbeforeunload 恕我直言
    猜你喜欢
    • 2011-03-08
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2018-06-11
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多