2016-08-26 73 views
0

我正在應用'orderby'過濾器,但它不起作用。我從API獲取數據,我仔細檢查,肯定會來。但過濾器不起作用。爲什麼orderby過濾器不工作?

<div class="filter-container"> 
     <select class="form-control" ng-model="userOrder"> 
     <option value="0">No</option> 
     <option value="1">Yes</option> 
     </select> 
</div> 

<tr class="odd" ng-repeat="user in allusers | filter: query1 | filter: query2 | filter: query3 | filter: query4 | filter: query5 | orderBy: userOrder">  
    <td> 
     <span ng-if="user.superuser==1">Yes</span> 
     <span ng-if="user.superuser==0">No</span> 
    </td>  
    <td> 
     <span ng-if="user.status==0">Not active</span> 
     <span ng-if="user.status==1">Active</span> 
     <span ng-if="user.status==-1">Banned</span> 
    </td>    
</tr> 

我的控制器:

$scope.user = function() { 
    $http.get('http://event/users/users/') 
     .success(function (data) { 
      $scope.allusers = data; 
      console.log("all users data coming in user function");     
     }) 
     .error(function (data) { 
      console.log('error'); 
     }); 
}; 

回答

0

爲了通過你需要傳遞一樣,如果你有allusers爲波紋管數組的元素。然後userOrder應該name OR lastname

https://docs.angularjs.org/api/ng/filter/orderBy幫助你更多。

改變你的下降與波紋管,並嘗試。

<select class="form-control" ng-model="userOrder"> 
    <option value="username">Username</option> 
    <option value="email">Email</option>  
</select> 
+0

他已經在'$ scope.allusers = data;'中添加數據;' –

+0

我在另一個項目中編寫了相同的代碼,它在那裏工作,但不在這裏, –

+0

@UsmanIqbal can you pl輕鬆寫入$ scope.allusers中的虛擬數據是什麼? – Mitul

0

我假設你正在試圖通過user對象的superuser財產訂購。

你應該這樣做:如果你希望你的選擇框控制器是否按降序或升序

orderBy : "superuser" 

,這樣做:

<select class="form-control" ng-model="sortReversed"> 
     <option value="False">No</option> 
     <option value="True">Yes</option> 
</select> 

... 

orderBy : "superuser" : sortReversed 

希望它可以幫助

+0

應用您的答案,當我選擇否時,我仍然在結果中看到」否「,並且如果我選擇」是「,則不改變。 –