如何显示已过滤的ng-repeat数据的长度

StackOverflow地址

http://stackoverflow.com/questions/15316363/how-to-display-length-of-filtered-ng-repeat-data

问题描述

楼主有一个数组,包含了许多对象(JSON格式)。以下假设为数组的内容:

1
2
3
4
5
6
7
8
9
10
var data = [
{
"name": "Jim",
"age" : 25
},
{
"name": "Jerry",
"age": 27
}
];

接下来通过以下方式展示:

1
2
<div ng-repeat="person in data | filter: query">
</div>

在这里,通过一个输入框执行查询来筛选显示的内容。
楼主需要在另一处显示当前人员的数量,例如:Showing Persons

楼主想要达到的目的是当一个用户搜索人员时,数据根据搜索条件显示,显示当前人员总数的Showing…persons一并变化。但是现在不行。这里总是显示所有人员的总数而不是被筛选后的数值。那么问题来了,如何才能获取被筛选数据的总数呢?

最佳解答

针对Angular1.3+

使用alias表达式(文档:Angular 1.3.0,往下翻找到Arguments章节):

1
2
<div ng-repeat="person in data | filter:query as filtered">
</div>

针对Angular1.3之前版本

将结果赋值给一个新的变量,(例如:filtered)然后再用。

1
2
<div ng-repeat="person in filtered = (data | filter: query)">
</div>

显示结果的个数:

1
Showing {{filtered.length}} Persons

查看类似的例子