检测URL更改

时间:2014-10-15 10:15:04

标签: javascript angularjs

我知道之前已经问过这个问题,我实际上找到了一些我已经实现的解决方案。不幸的是,我无法得到我想要的东西。

我之前没有做过AngularJS,我想做的是:

  1. 检测网址何时更改
  2. 根据URL更改为
  3. 进行一些处理

    第二部分已经完成了。我有一个URL更改时调用的函数。我们称之为 myFunction()

    网站的 html 元素有2个属性: ng-controller ng-app

    ng-controller :myCtrl

    ng-app :myApp

    我在 head 元素上加载了一个JavaScript文件。我最终想要做的是在该文件中添加一些逻辑来监视URL更改。

    我在Firebug中尝试过的最后一件事是:

    angular.module('myApp').controller("myCtrl", function($scope, $location, $rootScope, $log) {
      $rootScope.$on("$locationChangeStart", function(event, next, current) {
        $log.info("location changing to:" + next);
      });
    });
    

    但是,这不会记录URL更改的任何内容。

2 个答案:

答案 0 :(得分:1)

$locationChangeStart事件仅适用于$rootScope.Scope(基本上$scope)。

因此,您应该使用$scope代替$rootScope

$scope.$on("$locationChangeStart", function(event, next, current) {
  $log.info("location changing to:" + next);
});

对于$rootScope,可用事件为$routeChangeStart,应在run方法块中使用。

答案 1 :(得分:0)

您可以使用$routeChangeSuccess事件。

$scope.$on('$routeChangeSuccess', function () {
       myFunction(); 
    }
});

使用$route.current对象获取有关当前路线的信息。对于它的使用,不要忘记在控制器中注入$route