Angular.js. Comment compter les itérations ng-repeat qui satisfont le filtre personnalisé

Voici mon code:

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

Filtre:

 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; }}); 

J'ai besoin de montrer / cacher s répétés selon la quantité d'éléments filtrés dans la boucle. Quelle est la meilleure façon de le faire?

Merci

ng-repeat expression ng-repeat permet d'affecter les résultats filtrés à une variable. Cette variable sera accessible à partir de la portée actuelle afin que vous puissiez l'utiliser dans la même portée que vous le souhaitez:

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

La manière la plus simple peut être d'exécuter le filtre dans votre contrôleur. Quelque chose comme ça:

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

Ensuite, votre HTML ressemblerait à ceci:

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

j'ai trouvé ça

Comment afficher la longueur des données filtrées ng-repeat ,

Qui décrit l'obtention du compte après avoir filtré la liste

A partir d'Angular 1.3, vous pouvez utiliser la syntaxe suivante pour ng-repeat :

 variable in expression as alias_expression 

C'est:

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