Angular.js。如何计算满足自定义过滤器的ng-repeat迭代次数

时间:2013-10-29 17:03:46

标签: javascript angularjs 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。 最好的方法是什么?

由于

4 个答案:

答案 0 :(得分:58)

ng-repeat表达式允许将过滤结果分配给变量。此变量可从当前范围访问,因此您可以随意在同一范围内使用它:

<p>Number of filtered items: {{filteredItems.length}}</p>

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

答案 1 :(得分:2)

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

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>

答案 2 :(得分:2)

从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>

答案 3 :(得分:0)

我发现了这个

How to display length of filtered ng-repeat data

描述了在过滤列表后获取计数