Ich habe ein Problem mit angular ng-repeat-Direktive. Momentan arbeite ich an einem Projekt, wo ich von der API eine Liste von Elementen bekomme (manchmal könnte es 1k Elemente sein) und diese Liste sollte alle 5 Sekunden aktualisiert werden (es ist ein Monitoring-Projekt).ng-repeat mit track by über mehrere Eigenschaften
Wenn die Listenlänge ein wenig größer ist, könnte die Website beim erneuten Rendern von DOM "langsam" werden. Es kommt heraus, dass eckig das ganze DOM regeneriert (aber 95% des Artikels sind gleich!)
Einer der möglichen Ansatz ist es, "track by" Ausdruck zum Beispiel zu item.id. Aber hier kommt ein weiteres Problem, ich möchte auch Elemente neu generieren, wenn zum Beispiel Beschreibungen von einem anderen Benutzer geändert wurde. Seit track by ist Ausdruck für item.id Änderungen in item.description wurde nicht aktualisiert Element in DOM.
Es gibt eine Möglichkeit, über mehrere Eigenschaften zu verfolgen? Vielleicht eine Funktion? Oder vielleicht Vergleich mit "Hand"?
Irgendwelche Ideen, Code-Beispiele Ich würde schätzen :)
UPDATE
, was ich entdecken, wenn ich verfolgen, indem gesetzt Winkel item.id hat für Gegenstände nicht wieder Kreta html, aktualisieren Sie einfach Wert in bereits erstelltem Element und es scheint "schneller" zu sein als Entfernen und Erstellen. Zuvor war ich ein bisschen anders.
FIX
Für diejenigen, die für eine bessere Leistung über> 1k Artikel in ng-repeat USE Spur von item.id es Ihre Leistung wird Boost suchen;)
Sie eine Funktion wie 'Spur von Tracker verwenden können (Artikel)', wobei 'Tracker()' ist eine Funktion sichtbar in den Rahmen der Wiederholung. Andererseits kann die "Langsamkeit" auch dadurch verursacht werden, dass die Ansicht Tausende von Uhren erzeugt (z. B. 1 k Zeilen, drei Eigenschaften pro Reihe = 3000 Uhren). Möglicherweise müssen Sie das Problem genauer identifizieren und/oder einige Details überdenken. –
Und die Uhren werden feuern, obwohl der 'track by' keine Zeilen Ihres DOM neu streicht. –
Was wäre schneller: Das gesamte DOM regeneriert oder vergleicht manuell Elemente? – qwetty