2016-06-06 8 views
0

Ich habe eine lange Liste von Produkten, die mit ng-repeat angezeigt werden, und ich bin ein Filter auf der linken Seite, um die Liste in der Hauptinhaltsquelle zu reduzieren.Pre-count gefilterte Ergebnisse in einem ng-repeat

Ich habe die Anforderung, die Ergebnisse jedes möglichen Filters vorzuzählen, so dass der Text des Links dieser Filterschaltfläche die Ergebnisse anzeigt, die Sie erhalten, wenn Sie diesen Filter einschalten, genau wie in einem e- Handelsplatz.

Ich frage mich, wie dies mit AngularJS zu tun ist. Ich hoffe, es gibt eine einfachere Möglichkeit, dies zu tun, als einen benutzerdefinierten Filter für jeden möglichen Filter auf dem Bereich zu erstellen.

Beachten Sie, dass ich mich nicht darum kümmern muss, die Filterwerte zu verketten - nur die Ergebnisse der Auswahl dieses einen Filters.

Danke, Scott

+0

Ich bin nicht sicher, ob die möglichen Filter sind statisch oder nicht, aber das klingt wie in einem Fall, wo es besser wäre, den Server die Arbeit machen zu lassen. Haben Sie einen API-Aufruf, der jeden Filter und die Anzahl der Übereinstimmungen zurückgibt, dann rendern Sie sie einfach so, wie Sie es mit ng-repeat beschrieben haben. –

+0

Warum würden Sie Filter für das Oszilloskop erstellen? Zählen Sie einfach die Elemente, die das Prädikat Ihrer Filter erfüllen, im Controller und speichern Sie den Ergebniswert zusammen mit dem Prädikat und dem Namen des Filters. –

Antwort

0

nicht genau zu wissen, was das Datenmodell sieht aus wie ich kann nicht sagen, wenn Sie einen benutzerdefinierten Filter benötigen. Aber für ein einfaches Datenmodell sollten Sie in der Lage sein, ein einfaches Filter zu verwenden, etwa so: <ul> <li ng-repeat="item in items"> <a ng-click="filter(item.type)">{{item.name}} {{(allData | filter:item.type).length}}</a> </li> </ul>

Hier ist ein funktionierendes Beispiel http://codepen.io/mkl/pen/GqpqYN

+0

Woohoo! Das ist perfekt! Vielen Dank! – Scott