Как получить значение 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
            });
        };
    };
});
Другие вопросы по тегам