2016-06-03 6 views
0

Ich habe Probleme mit der Winkelansicht, wenn ich die Ansicht zum zweiten Mal betrete.AngularJS: zu große Anzahl von Zuhörern in Sicht und lange Ladezeit der Ansicht

Eingang:

  • Ansicht Lasten Liste von 1500 Artikeln
  • Alle 1500 Artikel in der Tabelle angezeigt mit ng-repeat und Filter
  • Nr $watch in der Ansicht verwendet

Problem Beschreibung:

  1. Wenn Sie das erste Mal beitreten die Ansicht lädt es gut und funktioniert gut keine Leistungsprobleme.
  2. Wenn die Ansicht nach Schritt 1 verlassen wird, dauert es 5sek-10sek
  3. Wenn Sie die Ansicht nach dem zweiten Schritt zweiten Mal verbinden, dauert es 30 Sekunden und 99% dieser Zeit für Skripting ausgeben. Nach dem Profiling dieses Schrittes werden> 20000 Listener angezeigt.

Fragen:

  1. Irgendwelche Vorschläge, was auf Schritt Ursache von Performance-Problem sein kann (3)?
  2. Interessant zu wissen, wie viele Daten gut mit ng-repeat angezeigt werden?

enter image description here

+1

Verwenden Sie 'track by $ index', wenn Sie' ng-repeat' verwenden. Es wird die Leistung verbessern. Verwenden Sie 'track by $ index'? https://docs.angularjs.org/api/ng/directive/ngRepeat – Chinni

+0

Wenn Sie nicht auf die 'ng-repeat'-Ausgabe achten müssen, können Sie eine einmalige Bindung verwenden, um all diese Watcher-https zu vermeiden: //docs.angularjs.org/guide/expression#one-time-binding –

Antwort

0

Ohne Code können wir keine endgültige Antwort geben, aber das Problem liegt wohl in der Tatsache, dass Sie so viele Elemente machen.

Jedes Mal, wenn Sie ng-bind etwas wird es eine $watch erstellen, wegen der großen Datenmenge (mit wahrscheinlich mehrere Bindungen) werden Ihre Beobachter extrem hoch sein. Um dies zu umgehen, können Sie etwas verwenden, das Virtualisierung verwendet (anstatt alles zu rendern, nur das zu rendern, was auf den Bildschirm passt), z. B. ui-grid.