Javascript addClass不';当元素在类属性中有插值运算符时,此选项不起作用

Javascript addClass不';当元素在类属性中有插值运算符时,此选项不起作用,javascript,angularjs,Javascript,Angularjs,我试图在angular.jslink函数中使用addClass函数,我想我发现了一个bug 问题: 如果我在模板的class属性中有一个插值运算符({{}),那么addClass将自动失败,并且不会添加新类 比如说- 考虑到这一链接功能: angular.module('myApp', []).directive('afterRepeat', function() { return { link: function(scope,element, attr

我试图在angular.js
link
函数中使用addClass函数,我想我发现了一个bug

问题:

如果我在模板的
class
属性中有一个插值运算符(
{{}
),那么
addClass
将自动失败,并且不会添加新类

比如说-

考虑到这一链接功能:

angular.module('myApp', []).directive('afterRepeat', function() {
    return  {        
        link: function(scope,element, attrs){                                                
                if (scope.$index%2==0){
                    element.addClass("special");
                }
            }
    }
});
此模板可以正常工作并正确添加类

<div class="item" ng-repeat="item in items" after-repeat>item {{$index}}</div>
项{{$index}
此模板不可用

<div class="item{{$index}}" ng-repeat="item in items" after-repeat>item {{$index}}</div>
项{{$index}
这里有一个

我认为这是因为属性值是在link函数之后计算的——但这对我来说没有意义。链接功能不应该是链中的最后一步吗

有人知道如何克服这一问题吗?

有两种选择:

a) 在作用域上有一个方法,该方法将返回适当的类名

$scope.getClass=函数(索引){
var klass='项目'+索引;
如果(索引%2==0){
klass+=‘特殊’;
}
返回克拉斯;
};
项目{{$index}
b) 使用ng类表达式:

<div 
  class="{{'item'+$index}}" 
  ng-class="{special: $index%2==0}" 
  ng-repeat="item in items"
>
  item {{$index}}
</div>

项目{{$index}

<div 
  class="{{'item'+$index}}" 
  ng-class="{special: $index%2==0}" 
  ng-repeat="item in items"
>
  item {{$index}}
</div>