21

这是我的代码:

<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

4 回答 4

60

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>
于 2013-10-29T17:34:01.317 回答
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>
于 2013-10-29T17:30:32.913 回答
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>
于 2016-06-01T15:15:33.623 回答
0

我找到了这个

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

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

于 2015-08-10T13:35:04.413 回答