2013-05-05 172 views
4

我是angular.js的新手,但我無法弄清楚如何使|過濾器:xxx使用通過$ http服務生成的數據。

在下面的代碼中,我簡直無法讓過濾器處理$ http生成的數據 - 當我在輸入框內輸入時,它什麼都不做。但是,如果我在$ scope函數內部硬編碼一些數據,過濾器會工作。

<div ng-controller="UserCtrl"> 

    <input ng-model="search"> 
    <ul> 

     <li ng-repeat="user in users| filter:search"> 
      {{user.id}} 
      {{user.firstname}} 
      {{user.lastname}} 
     </li> 
    </ul> 

</div> 

<script> 

function UserCtrl($scope, $http) { 
$http.get('actions.php?action=get_user_list').success(function(data) { 
    $scope.users = data; 
    }); 

} 

</script> 
+2

想通了它是什麼 - 我的PHP腳本生成對象的JSON數組用鑰匙(即01 => array(...)。Angular不能正確地過濾它,解決方案是生成一個沒有關鍵字的對象列表,例如:$ output = array(array(data),array(data))等 – pvukovic 2013-05-06 00:40:37

+1

也許這會對你有用:'array_values 'strip keys,所以數組變成簡單的基於0的數組。 – alx 2013-05-11 12:02:34

+0

是的,角度過濾器只適用於數組。 – Jess 2013-08-09 16:43:42

回答

0

這可以爲您服務:

<li ng-repeat="user in users| filter:{firstname : search}"> 
0

嘿下面的代碼

測試
<div ng-controller="UserCtrl> 
    <input ng-model="search"> 
    <ul> 
     <li ng-repeat="user in users | filter:search.$"> 
      {{user.id}} 
      {{usesr.firstname}} 
      {{user.lastname}} 
    </ul> 
</div> 

<script> 

var app = angular.module('Your Module Name' ,[]); 

app.controller('UserCtrl', function($scope, $http){ 
    $http.get('actions.php?action=get_user_list').then(function(response){ 
     $scope.users = response.data; 
    }); 
}); 

</script>