通过ng重复筛选器确定显示的结果数
Determining how many results are shown by ng-repeat filter
如果我将ng-repeat
与filter
一起使用,我如何确定过滤掉了多少元素(反之亦然,显示了多少)?具体来说,我想创建一个搜索栏来创建过滤器,但我也想显示过滤器隐藏了多少元素(例如Showing 6 of 10 results
)。
请参阅此处http://jsbin.com/xuyuy/1/edit
在你的中继器中,你可以创建新的阵列,即:人员过滤
ng-repeat="person in personsfilterd = (persons | filter : search )
然后只显示原始阵列和滤波阵列的长度:
Showing {{personsfilterd.length}} of {{persons.length }} results
此处的完整代码:
var app = angular.module('app', []);
app.controller('fCtrl', function($scope) {
$scope.persons = [
'Mike', 'Tom', 'Tim', 'Jim', 'Ken'
]
});
<div ng-app="app">
<div ng-controller="fCtrl">
<input type="text" ng-model = "search"> Showing {{personsfilterd.length}} of {{persons.length }} results
<li ng-repeat="person in personsfilterd = (persons | filter : search )">{{person}}</li>
</div>
</div>
首先,ngRepeat
有以下几种:$index
、$first
、$middle
、$last
,用于确定当前位置。所以我想你可能对$last
感兴趣。我不确定的是,它是会提取原始计数还是过滤后的计数。
编辑:通过设置varX.length
并在模板(HTML代码)中使用它,您可以从ctrl中获得原始值的计数,然后,假设$last
返回最终计数+1(因为它是基于0的),您可以在应用过滤器后获得计数。
ng重复
我在这里找到了答案。解决方案是将过滤后的数据分配给ng-repeat
中的一个新变量。可能会导致一些记忆问题,但与我的情况无关。
相关文章:
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- JavaScript循环无法正确计算/显示结果
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- BMI计算器以Javascript显示结果
- 在表中显示结果
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 搜索XML文件并使用javascript显示结果
- Moment.js不显示结果
- 使用jQuery延迟表单输入,并在延迟后在同一页面上显示结果
- 防止 PHP 在新页面中显示结果
- jquery jqgrid 不显示结果,具体取决于 JSON 对象中的参数
- Angular-如何显示结果,仅在未选中时显示
- backbone.js视图没有't由于异步获取而显示结果;t渲染
- jqueryajax帖子将我发送到操作页面,并且不会显示结果数据
- 添加两个数字,并使用Javascript在文本框中显示结果
- 接受用户输入,与JSON数据匹配,并以javascript显示结果
- 自动完成 JQuery 不显示结果
- 控制台.log或显示结果的函数
- 提交表单,使用脚本处理信息,并在同一页面上显示结果
- AJAX 实时搜索仅当结果以相同的第一个字母开头时才显示结果