winkels $http
Dienst löst einen $digest
auf jedem get
aus (wenn kein $digest
bereits läuft):
Zusätzlich zum Abrufen von Objekten aus unserer API verfügt unsere App über viele Direktiven mit templateUrl
- die von angular mit $http
abgerufen werden. Dies verursacht hunderte von $digest
Schleifen beim Kaltstart.
Wenn Sie die obige Zeile auskommentieren, wird die Anzahl der $digest
-Schleifen auf etwa 3 reduziert, und die App wird VIEL schneller ausgeführt, ohne dass Bindungen unterbrochen werden (zumindest weil $http
kein a auslöst $digest
).
Gibt es eine Möglichkeit, $ http zu deaktivieren, die den $ Digest auslöst?
Es ist vielleicht nicht möglich, direkt das zu tun, was Sie wollen, aber Sie können die Auswirkungen dieser Digest-Zyklen begrenzen. Setzen Sie <div ng-if="everythingLoaded">
auf den größten Teil der Seite und setzen Sie everythingLoaded
auf true, nachdem alle $http
-Aufrufe abgeschlossen sind.
Zum Beispiel:
%Vor% Der Digest-Zyklus wird weiterhin ausgeführt, ist aber viel schneller, da ng-if
die Auswirkungen auf das DOM und einen Großteil Ihres Controllers eliminiert, bis die Bedingung erfüllt ist.
Ich bin mir ziemlich sicher, dass die Verwendung des Template-Caching für das Problem des Ladens der Vorlage gelöst wird, vorausgesetzt, es ist immer noch ein Problem in den letzten eckigen Versionen.
Tags und Links javascript angularjs http digest