Angular nested ng-repeat Filterelemente, die dem übergeordneten Wert entsprechen

8

Ich gebe zwei Arrays zu meiner Ansicht weiter. Ich möchte, dass meine verschachtelte Schleife nur anzeigt, wo der Wert von parent_id mit der parent.id übereinstimmt. ZB.

%Vor%

Ist dies möglich / beste Praxis in Winkel von sollte ich das Objekt im Knoten filtern, bevor es in eckige geht? Danke!

    
davet 25.11.2014, 21:22
quelle

3 Antworten

9

Es gibt mehrere Möglichkeiten, wie Sie es tun könnten ... Sie könnten eine Funktion erstellen, die nur die untergeordneten Elemente zurückgibt:

%Vor%

html:

%Vor%

Sie könnten einen Filter definieren, um dasselbe zu tun:

%Vor%

html:

%Vor%

Beide Methoden führen jedoch jeden Digest-Zyklus aus. Wenn Sie eine große Liste von Elementen haben, möchten Sie auf jeden Fall die Leistung verbessern. Ich denke, der beste Weg wäre, diese Ergebnisse vorzuverarbeiten, wenn man sie bekommt, indem man jedem Objekt in arr1 ein Child-Array mit nur seinen Child-Elementen hinzufügt (hier mit array.filter anstelle von for loop und array.forEach):

%Vor%

In der HTML-Datei arbeiten Sie bereits mit dem Elternteil, so dass Sie die Kinder-Eigenschaft wiederholen können:

%Vor%     
Jason Goemaat 25.11.2014, 21:51
quelle
10

Anstelle der Verwendung von Filtern kann data-ng-if das gleiche Ergebnis erzielen.

%Vor%     
Riad Baghbanli 25.11.2014 21:45
quelle
0

Die Lösung hängt davon ab, wie oft Arrays geändert werden und wie groß Arrays sind.

Die erste Lösung ist Filter zu verwenden. Aber in diesem Fall würde es mindestens zweimal aufgerufen werden (um sicherzustellen, dass das Ergebnis "stabilisiert" ist - selected Elemente).

Eine andere Lösung besteht darin, $watch von Ihnen selbst original Array und bereiten Sie "view" -Version von es Kinder dort injizieren. Persönlich würde ich die zweite als expliziter bevorzugen.

Wenn Sie jedoch den Filter "find-the0child" in anderen Teilen Ihrer Anwendung wiederverwenden können, können Sie mit dem ersten fortfahren - AngularJS wird den Filter erst wieder ausführen, nachdem das ursprüngliche Array geändert wurde.

Wenn nötig, kann ich hier ein Beispiel für die Implementierung einer dieser Optionen angeben - füge den zu antwortenden Kommentar hinzu.

    
Valentyn Shybanov 25.11.2014 21:39
quelle

Tags und Links