2013-05-05 134 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>