Angular.js。 如何计算满足自定义filter的ng-repeat迭代

这是我的代码:

<div ng-show="?" ng-repeat="item in items | notEmpty"> </div> 

过滤:

 Kb.filter("notEmpty", function(){ return function(input){ var output=[]; for(var i=0;i<input.length;i++){ if(input[i]){ output.push(input[i]); } } return output; }}); 

我需要根据循环中过滤项目的数量显示/隐藏重复的s。 什么是最好的办法呢?

谢谢

ng-repeatexpression式允许将过滤结果分配给variables。 这个variables可以从当前范围访问,所以你可以在任何你想要的范围内使用它:

 <p>Number of filtered items: {{filteredItems.length}}</p> <div ng-show="filteredItems.length > 0" ng-repeat="item in filteredItems = (items | notEmpty)" > {{$index}} </div> 

最简单的方法可能是在控制器中运行filter。 像这样的东西:

 function MyCtrl($scope, notEmptyFilter) { //$scope.items is put into the scope somehow $scope.filteredItems = notEmptyFilter($scope.items); } 

那么你的HTML看起来像这样:

 <div ng-show="filteredItems.length > 0" ng-repeat="item in filteredItems"> </div> 

从Angular 1.3开始,您可以使用以下语法来进行ng-repeat

 variable in expression as alias_expression 

那是:

 <p>Number of filtered items: {{filteredItems.length}}</p> <div ng-repeat="item in items | notEmpty as filteredItems"> ... </div> 

我find了这个

如何显示过滤后的重复数据的长度 ,

描述在过滤列表之后获得计数