452 Stimmen

Wie kann die Länge der gefilterten ng-repeat-Daten angezeigt werden?

Ich habe ein Datenarray, das viele Objekte (im JSON-Format) enthält. Das Folgende kann als Inhalt dieses Arrays angenommen werden:

var data = [
  {
    "name": "Jim",
    "age" : 25
  },
  {
    "name": "Jerry",
    "age": 27
  }
];

Jetzt zeige ich diese Details wie folgt an:

``

Hier wird die Abfrage an ein Eingabefeld modelliert, mit dem der Benutzer die angezeigten Daten einschränken kann.

Jetzt habe ich einen anderen Ort, an dem ich die aktuelle Anzahl der angezeigten Personen anzeigen, also Zeige {{data.length}} Personen

Was ich tun möchte, ist, dass wenn der Benutzer nach einer Person sucht und die angezeigten Daten basierend auf der Abfrage gefiltert werden, die Anzeigen... Personen auch den Wert der aktuell angezeigten Personen ändern. Aber das passiert nicht. Es zeigt immer die Gesamtanzahl der Personen in den Daten an, anstatt die gefilterten anzuzeigen - wie erhalte ich die Anzahl der gefilterten Daten?

``

25voto

JeremyWeir Punkte 23702

Es ist auch nützlich zu beachten, dass Sie mehrere Ebenen von Ergebnissen speichern können, indem Sie Filter gruppieren

alle Elemente: {{items.length}}
gefilterte Elemente: {{filteredItems.length}}
begrenzte und gefilterte Elemente: {{limitedAndFilteredItems.length}}
...

hier ist ein Demo-Fiddle

13voto

Mak Punkte 19244

Hier ist ein Arbeitsbeispiel Siehe auf Plunker

    Zeige {{data.length}} Personen; 
    Gefiltert {{counted}}

        {{person.name}}

var app = angular.module('angularjs-starter', [])

app.controller('MainCtrl', function($scope, $filter) {
  $scope.data = [
    {
      "name": "Jim", "age" : 21
    }, {
      "name": "Jerry", "age": 26
    }, {
      "name": "Alex",  "age" : 25
    }, {
      "name": "Max", "age": 22
    }
  ];

  $scope.counted = $scope.data.length; 
  $scope.$watch("search", function(query){
    $scope.counted = $filter("filter")($scope.data, query).length;
  });
});
</code></pre>

<p></p></x-turndown>

10voto

Hazarapet Tunanyan Punkte 2711

Du kannst es auf 2 Arten machen. Im Template und im Controller. Im Template kannst du dein gefiltertes Array einer anderen Variable zuweisen und es dann verwenden, wie du möchtest. Hier ist, wie es gemacht wird:

 ....
{{ usersList.length | number }}

Wenn du Beispiele benötigst, sieh dir die AngularJs-Beispiele/Demos zur gefilterten Anzahl an

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X