$ routeChangeSuccess未在AngularJS App中触发

时间:2018-01-29 05:29:57

标签: javascript angularjs ngroute

我正在编辑运行1.3.14的旧AngularJS应用程序

正在使用此指令加载导航栏并更改导航链接的样式:

app.directive('siteNavbar', ['$location', function($location) {
  return {
    restrict: 'A',
    templateUrl: 'partials/site-navbar/site-navbar.tmpl.html',
    controller: 'NavbarCtrl',
    controllerAs: 'navbar',
    link: function (scope, elem) {
      //after the route has changed
      scope.$on("$routeChangeSuccess", function () {
        var hrefs = [$location.path()];
        angular.forEach(elem.find('a'), function (a) {
          a = angular.element(a);
          if (-1 !== hrefs.indexOf(a.attr('href'))) {
            a.parent().addClass('active');
          } else {
            a.parent().removeClass('active');
          };
        });     
      });
      $(document).on('click.nav','.navbar-collapse.in',function(e) {
        if( $(e.target).is('a') ) {
          $(this).removeClass('in').addClass('collapse');
        }
      });
    }
  };
}]);

导航栏加载得很好,但由于某种原因,scope.$on("$routeChangeSuccess", function () { ... }没有触发。我尝试过使用$scope $rootscopestateChangeSuccess,但到目前为止我还没有尝试过。

我知道它可能很简单,但我似乎无法找到它。如何在用户更改路线时触发此功能?

0 个答案:

没有答案