2013-08-27 26 views
14

Tôi đang tạo danh sách trong một ng-repeat, tôi cần cung cấp cho tất cả các yếu tố li là con thứ n của cha hoặc nhiều hơn, một lớp nhất định (trong số ng-repeat của chúng tôi) một chỉ số lớn hơn giữa). Ví dụ: nếu danh sách là 10 mục tôi cần phải cung cấp cho lớp thứ 5, 6 ... 10 li trẻ em một lớp. Vì vậy, nếu mã của tôi là một cái gì đó này -Lớp thiết lập góc trong Ng-Repeat

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

một cách tốt và tốt để gán một lớp học cho trẻ em từ các chỉ số trung bình và trên là gì? Điều kiện của tôi là tôi không nên thay đổi cấu trúc của html. Tôi có thể thêm directives\filters hoặc thêm thứ vào bộ điều khiển.

+0

chỉ cần thêm một số thứ như 'ng-class =" {'yourClass': $ index> friends.length/2} "' vào li. – Yoshi

+2

trông giống như ma thuật đen, bạn có chắc nó sẽ hoạt động không? –

+1

vâng tôi chắc chắn;) Nếu logic có thể thay đổi, bạn có thể trích xuất nó từ khung nhìn và để cho bộ điều khiển quyết định. Ví dụ: 'ng-class =" someConrollerMethod ($ index, bạn bè) "' – Yoshi

Trả lời

29

chỉ cần sử dụng ng-class trên các yếu tố lặp đi lặp lại, ví dụ:

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

    {{friend.name}} 
</li> 

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


hoặc trích xuất các logic, như:

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

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

Tôi thấy rằng "đặc biệt" phải nằm trong dấu ngoặc kép – nuander

Các vấn đề liên quan