2013-08-27 20 views
14

ng-repeat'da bir liste oluşturuyorum, babasının ya da daha fazlasının bir çocuğu olan tüm li öğelerini vermem gerekiyor (belirli bir sınıf (ng-repeat bizim için) ortadan büyük bir indeks). Örneğin, liste 10 maddeyse, 5., 6. ... 10. li çocuklarına bir sınıf vermeliyim. benim kod şey mi Yani eğer -Açısal Ayar Sınıfı Ng-Tekrarı

[ul] 
    [li ng-repeat="friend in friends"] 
     {{friend.name}} who is {{friend.age}} years old. 
    [/li] 
    [/ul] 

yukarıda orta indeksi ve gelen çocuklara bir sınıf atamak olası ve iyi yolu nedir? Koşullarım, html'nin yapısını değiştirmemem gerekiyor. directives\filters ekleyebilir veya denetleyicilere bir şeyler ekleyebilirim.

+0

sadece "ng-class =" {'yourClass': $ index> friends.length/2} "' gibi bir şey ekleyin. Kara büyü gibi görünen – Yoshi

+2

, işe yarayacağından emin misin? –

+1

evet oldukça eminim;) Mantık değişebilirse, elbette görünümünden çıkartabilirsiniz ve denetleyicinin karar vermesine izin verebilirsiniz. Örn: 'ng-class =" someConrollerMethod ($ index, friends) "' – Yoshi

cevap

29

basitçe, tekrarlanan elemana örneğin ng-class kullanın:

<li 
    ng-repeat="friend in friends" 
    ng-class="{special: $index > friends.length/2 - 1}"> 

    {{friend.name}} 
</li> 

demo: http://jsbin.com/iFigAYi/1/


ya da benzeri mantığı, ayıklamak:

<ul> 
    <li ng-repeat="friend in friends" ng-class="getClass($index, friends)"> 
    {{friend.name}} 
    </li> 
</ul> 

ve

$scope.getClass = function getClass(idx, list) { 
    return { 
    special: idx > list.length/2 - 1 
    }; 
}; 
+1

"Özel" in tırnak içinde olması gerektiğini buldum – nuander