2017-07-10 73 views
1

我有一個按屬性「年齡」和「名稱」排序的表,但我有一個計數器行(counterR),顯示錶中的行數。 我想排除OrderBy上的這個項目,因爲也是有序的,我需要它是靜態的,並且總是有序的,但我不能。 有我的問題的Plunker鏈接:http://plnkr.co/edit/MJYayUANphxksbGkyEcj?p=preview排除OrderBy在表中的項目 - AngularJS

HTML:

<body ng-controller="MainCtrl"> 
    <table border="0"> 
    <thead> 
     <tr> 
     <th>#</th> 
     <th>ID</th> 
     <th ng-click="sortType = 'name';sortReverse=!sortReverse">NAME</th> 
     <th ng-click="sortType = 'age';sortReverse=!sortReverse">AGE</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr ng-init="counterR=incrementCounter()" ng-repeat="item in items | orderBy:sortType:sortReverse"> 
     <td>{{counterR}}</td> 
     <td>{{item.id}}</td> 
     <td>{{item.name}}</td> 
     <td>{{item.age}}</td> 
     </tr> 
    </tbody> 
    </table> 

JS:

$scope.items = [ 
    {"name":"Jhon","id":"BB1","age":23}, 
    {"name":"Austin","id":"BB2","age":44}, 
    {"name":"Mark","id":"BB3","age":56}, 
    {"name":"Jenn","id":"BB4","age":15} 
    ]; 
    var counterRow = 0; 
    $scope.incrementCounter = function(){  
     counterRow = counterRow + 1;  
     return counterRow; 
    } 

回答

0

代替存儲與數據行數 - 這不因爲行號不是特定於數據行,而是顯示位置 - 您需要「即時」計算值。在ng-repeat的範圍內,您可以使用特殊的$index變量來執行此操作。也就是說,不是

<td>{{counterR}}</td> 

從數據行讀取值,你可以使用

<td>{{$index+1}}</td> 

+0

由於它的工作原理(假設序列號從1開始)!但是,當我添加一個人的年齡高於21歲的過濾器時,在對項目應用OrderBy時,行的計數器不是順序的,是否有其他方法而不是$ index?有Plunker鏈接:http://plnkr.co/edit/unwHb9XS46S2qoc2QpJV?p=preview –

+0

對不起,我不追隨陌生人的plnkr鏈接。如果你想在這裏發佈額外的代碼,我會很高興看到它。或者,您可能想查看AngularJS的ngRepeat文檔(https://docs.angularjs.org/api/ng/directive/ngRepeat);從示例中注意,您描述的症狀不是預期的。 –

+0

當然,我只能改變這樣的: HTML: 21」 NG重複= 「項目中的項目|排序依據:sortType:sortReverse」> ​​{{$指數+ 1}} ​​{{item.id}} ​​{{item.name}} ​​{{item.age}}內 –