webentwicklung-frage-antwort-db.com.de

Angular.js. Wie ng-repeat-Iterationen gezählt werden, die den benutzerdefinierten Filter erfüllen

Hier ist mein Code:

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

Filter:

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

Ich muss wiederholte s entsprechend der Anzahl der gefilterten Elemente in der Schleife anzeigen/ausblenden. Was ist der beste Weg, dies zu tun?

Vielen Dank

21

Mit dem ng-repeat-Ausdruck können gefilterte Ergebnisse einer Variablen zugewiesen werden. Auf diese Variable kann aus dem aktuellen Bereich zugegriffen werden, sodass Sie sie in dem von Ihnen gewünschten Bereich verwenden können:

<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

Ab Angular 1.3 können Sie folgende Syntax für ng-repeat verwenden:

variable in expression as alias_expression

Das ist:

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

<div ng-repeat="item in items | notEmpty as filteredItems">
 ...
</div>
2
Gaël J

Am einfachsten ist es, wenn Sie den Filter in Ihrem Controller ausführen. Etwas wie das:

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

Dann würde Ihr HTML-Code ungefähr so ​​aussehen:

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

Ich habe das gefunden 

So zeigen Sie die Länge der gefilterten Wiederholungsdaten an

hier wird beschrieben, wie Sie die Anzahl nach dem Filtern der Liste ermitteln 

0
Sajjad Ali Khan