以下是使用ng-class
指令的两种不同方法。我需要他们两个,在同一个元素上,但那不起作用。
http://plnkr.co/edit/uZNK7I?p=preview
<div ng-repeat="item in [1, 2, 3, 4, 5]"
ng-class="{ first: $first, last: $last }">{{item}}</div>
正确导致
<div class="first">1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div class="last">5</div>
http://plnkr.co/edit/tp6lgR?p=preview
<div ng-repeat="item in [1, 2, 3, 4, 5]"
ng-class=" 'count-' + ($index + 1) ">{{item}}</div>
正确导致
<div class="count-1">1</div>
<div class="count-2">2</div>
<div class="count-3">3</div>
<div class="count-4">4</div>
<div class="count-5">5</div>
我需要动态类名(如'count-' + n
),但也需要多个类的对象语法。
我不能只使用2个ng-class
属性(http://plnkr.co/edit/OLaYke?p=preview),只有第一个有效。
有什么建议吗?
答案 0 :(得分:20)
您不应该使用ng-class
作为第二个,请使用
<div class="count-{{$index + 1}}" ng-class="{ first: $first, last: $last }">
答案 1 :(得分:7)
您应该为ngClass
提供一个包含表达式和对象的数组:
<div ng-class="['count-' + ($index + 1), { first: $first, last: $last }]">
<强> 注意:的强>
在接受的答案(同时使用ngClass
指令和class
属性中的插值)中建议的解决方案是一种不好的做法。详情请见here和here。
答案 2 :(得分:2)
如果你需要将它们混合在一起,那就去串连:
ng-class="'count-' + ($index+1) + ($first?' first':($last?' last':''))"
或者更清晰的观点:
ng-class="'count-' + ($index+1) + ($first?' first':'') + ($last?' last':'')"
使用class="{{exp}}"
代替ng-class="exp"
并不知道专业人士,因为当exp
的值发生变化时,两者都会更新。相反,与第一个一起使用可能会导致页面在某些情况下冻结。
答案 3 :(得分:0)
我认为您可以将属性ng-class
与;
尝试:
ng-class=" 'count-' + ($index + 1) ; { first: $first, last: $last }"