如何在指令中获取 ng-class 值

how to get ng-class value in directive

我有一些重复的 'li' 元素,其中一些有 'active' class 像这样

<li ng-repeat="menuSubItem in menuItem.items" ng-class="{active: vm.currentMenuName == menuSubItem.name}" active-collapsible>

另一方面,我有一个指令添加一些 classes 取决于 'active' class,我的指令是这样的

directive('activeCollapsible', function() {
  return {
    restrict: 'A',
    link: function($scope, element, attrs) {

    }
  }
});

但我在 'element' 参数中没有看到 'active' class。 (我已经在Angular前加了jQuery。)

$(element).hasClass('active')

如何在我的指令中得到 'active' class?

你可以得到元素有活动 class 或不使用 $watch functino on scope,$watch 第一部分中的函数 return 每次在 digest 时都会被评估循环 运行 然后你将根据 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
            });
        };
    };
});