1

利用 AngularJSorderBy过滤器,我在这里创建了一个可排序的表,

http://plnkr.co/edit/AarOSuawXVYe9C5LBDOK?p=preview

我在单击时使用每个表头的“反向”值来确定排序的方向。这会产生一个明显的问题,但是当我单击不同的表头时,它们只会转到与之前可能已从另一个表头更改的反向值相反的位置。

<th ng-click="predicate = 'character'; reverse=!reverse">alpha</th>
<th ng-click="predicate = 'num'; reverse=!reverse">num</th>
<th ng-click="predicate = 'dec'; reverse=!reverse">dec</th>
<th ng-click="predicate = 'value'; reverse=!reverse"></th>
<th ng-click="predicate = 'date'; reverse=!reverse">date</th>

和 ng-repeat 使用 orderBy 过滤器填充我的表行

<tr ng-repeat="line in infoCtrl.data | orderBy:predicate:reverse">

我如何隔离反向的范围,或者给它们一个单独的反向值?

4

1 回答 1

2

理想情况下,我会在反转排序布尔值之前检查谓词的当前值。如果相同,请反转它。否则,将其重置为默认值。

在您的控制器中有一个用于排序的功能:

 $scope.predicate = "character";
 $scope.reverse = false    
 $scope.sort = function(p) {
     if ($scope.predicate == p) {
         $scope.reverse = !$scope.reverse;
     } else {
         $scope.predicate = p;  
         $scope.reverse = false;
     }
 }

并从 html 调用此函数:

    <th ng-click="sort('character')">alpha</th>
    <th ng-click="sort('num')">num</th>
    <th ng-click="sort('dec')">dec</th>
    <th ng-click="sort('value')"></th>
    <th ng-click="sort('date')">date</th>
于 2014-06-05T18:52:36.777 回答