我正在编辑运行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
$rootscope
和stateChangeSuccess
,但到目前为止我还没有尝试过。
我知道它可能很简单,但我似乎无法找到它。如何在用户更改路线时触发此功能?