我有一个使用$ resource的People服务,我从PeopleCtrl使用People.query()调用来从json api获取用户列表。数据回复如下:
[
{
"usr_id" : "1"
"first_name" : "lucky"
"awesome" : "true"
},
{
"usr_id" : "6"
"first_name" : "Adolf"
"awesome" : "false"
}
]
在我的html中,我想使用ng-repeat,并使用该数据进行过滤。我的想法是我有一个用户列表,我想从输入字段中过滤它们。我可以得到基本的工作,但只要输入'k',它就会显示所有结果,而不是只显示字母'k'的结果。这就是我所拥有的:
<div id="section-body" ng-controller="PeopleSearchCtrl">
<input type="text" ng-model="search.first_name" placeholder="Search Your Name">
<center>
<table ng-show="(filteredData = (People | filter:search)) && search.first_name && search.first_name.length >= 1">
<tr ng-repeat="per in filteredData" ng-click="search.first_name = per.first_name + ' ' + per.last_name">
<td>{{per.per_id}}</td>
<td>{{per.first_name + " " + per.last_name}}</td>
</tr>
</table>
</center>
<button class="btn btn-large btn-primary" type="button">Submit</button>
</div>
但是一旦我尝试输入输入,它就会显示所有用户。键入第二个字母,不更改,键入第三个字母,仅显示匹配的记录。删除字符,直到只剩下'k',没有记录显示。所以我想知道我做错了怎么回事。 'People'变量被分配给范围,并且是用户的结果数据数组。
答案 0 :(得分:4)
这是它的工作原理。一旦弄明白,这很容易。
<input ng-model="query">
<table id="productList" ng-show="(products|filter:query).length">
<tr ng-repeat="product in products|filter:{username:query}">
...