web-dev-qa-db-ja.com

Angular.js。カスタムフィルターを満たす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;
}});

ループ内のフィルターされたアイテムの量に応じて、繰り返されるを表示/非表示にする必要があります。それを行う最良の方法は何ですか?

ありがとう

21

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>
58
Stewie

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>
2
Gaël J

最も簡単な方法は、コントローラーでフィルターを実行することです。このようなもの:

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
dnc253

私はこれを見つけました

フィルタリングされたng-repeatデータの長さを表示する方法

リストをフィルタリングした後にカウントを取得することを説明します

0
Sajjad Ali Khan