Как получить значение ng-класса в директиве
У меня есть несколько повторяющихся элементов 'li', и у некоторых из них есть такой 'активный' класс, как этот
<li ng-repeat="menuSubItem in menuItem.items" ng-class="{active: vm.currentMenuName == menuSubItem.name}" active-collapsible>
с другой стороны, у меня есть директива для добавления некоторых классов, зависящих от "активного" класса, моя директива такая
directive('activeCollapsible', function() {
return {
restrict: 'A',
link: function($scope, element, attrs) {
}
}
});
но я не вижу "активный" класс в аргументе "элемент". (Я уже добавил jQuery до Angular.)
$(element).hasClass('active')
Как я могу получить "активный" класс в моей директиве?
1 ответ
Решение
Вы можете получить элемент с активным классом или не использовать $watch
functino по объему, функция возвращает в $watch
первая часть будет оцениваться каждый раз при запуске цикла дайджеста, а затем вы получите либо истинное, либо ложное значение на основе element.hasClasss('active')
директива
directive('activeCollapsible', function() {
return {
restrict: 'A',
link: function($scope, element, attrs) {
$scope.$watch(function() {
return element.hasClass('active')
}, function(newVal) {
if (newVal) //then it has active Class
//do something
});
};
};
});