2013-04-02 15 views
0

我试图在angular.js link函数中使用addClass函数,我想我发现了一个错误。当元素在类属性中有插值运算符时,addClass不起作用

问题:

如果我有模板的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> 

此模板不

<div class="item{{$index}}" ng-repeat="item in items" after-repeat>item {{$index}}</div> 

这里有一个jsFiddle demonstrating the problem

我想,这是因为该属性值将被链接功能后评估 - 但是,这没有任何意义了我。链接功能不应该是链中的最后一步?

有没有人有如何克服这个想法?

回答

1

两种选择:

一)对范围的方法,这将返回相应的类名  

$scope.getClass = function(index){ 
    var klass = 'item' + index; 
    if(index % 2 === 0){ 
    klass += ' special'; 
    } 
    return klass; 
}; 

<div ng-class="getClass($index)" ng-repeat="item in items">item {{$index}}</div> 

二)请使用纳克级的表达:

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

Fiddle

相关问题