2013-03-30 84 views
1

此片段展示了我的問題很好:在AngularJS中如何獲得排序後的數組元素的新索引?

JSfiddle - sorting table

重要部分:

<tr ng-repeat="result in results | orderBy:predicate" ng-class="classRow($index)"> 

$scope.classRow = function(i) { 
    return $scope.results[i].size > 9000 ? 'highlight' : ''; 
} 

正如你可以看到,指數始終從0到6重新排序數組,即使,所以突出顯示不隨該項目移動。

我怎樣才能突出顯示堅持原來的項目?

+0

一件事要實現約' 'ng-repeat'中的$ index'過濾或排序的項目不是原始數組索引。例如,如果過濾器需要10個項目並將它們分成兩半,則無論原始數組索引是什麼,新的「$索引」都將是「0-4」。 '$ index'將是由角度內部使用的新過濾或排序數組的索引 – charlietfl

回答

1

你也可以這樣做在線,所以沒有必要對控制器代碼:

ng-class="{ highlight: result.size > 9000 }" 

工作例如:http://jsfiddle.net/wEBnX/2/

+0

感謝您的好答案,Josh和@jszobody。選擇這個優雅。 – Swonkie

0

而不是索引的工作,直接將大小屬性傳遞到classRow()

<tr ng-repeat="result in results | orderBy:predicate" ng-class="classRow(result.size)"> 

$scope.classRow = function(size) { 
    return size > 9000 ? 'highlight' : ''; 
} 

工作例如:http://jsfiddle.net/WqbNS/

相關問題