2014-11-04 3 views
5

Bei http://www.binpress.com/tutorial/speeding-up-angular-js-with-simple-optimizations/135

geschrieben steht, dass für Richtlinien es besser ist, zu interpolieren zu verwenden, als ng-repeat:

Die ng-Repeat-Richtlinie wahrscheinlich der schlechteste Täter für Leistungsbedenken, was bedeutet, dass es leicht missbraucht werden kann. Eine ng-Wiederholung beschäftigt sich wahrscheinlich mit Arrays von $ scope Objects und dieser Hämmer die Leistung des $ Digest-Zyklus.

Zum Beispiel statt eine globale Navigation mit ng-Repeat-Rendering, wir unsere eigene Navigation mit den $ interpolieren Provider machen unsere Vorlage gegen ein Objekt schaffen könnten und in DOM-Knoten konvertieren.

Bei Verwendung von angular 1.3 konnten wir ng-repeat mit einmaligen Bindungen verwenden, um das gleiche Ergebnis zu erzielen.

Ist es noch besser, $ interpolate für diesen Zweck zu verwenden?

Antwort

5

würde ich bindonce für diese empfehlen, wenn Sie auf < 1.3 sind, fügen Sie einfach bindonce neben Ihrem ng-repeat und ändern Sie Ihre ng-* Richtlinien bo-* im Wiederholungsteil. Es macht im Prinzip dasselbe wie die einmaligen Bindungen von 1.3.

Wenn Ihre quetion Sie gemeint sollten Sie $interpolate statt einmal in 1,3-Bindung, sage ich mit ng-repeat gehen würde, mit einer Zeit bindend, da es keine Beobachter sind Sie zu verlangsamen und es ist viel besser lesbar . Obwohl ng-repeat die untergeordneten Bereiche weiterhin erstellt, ist der Leistungsunterschied vernachlässigbar, wenn Sie in diesen Bereichen nichts tun.

Aus Erfahrung werden Sie Leistungsprobleme in Ihrem Browser beim Rendern so vieler Elemente auftreten, bevor $digest ein Problem wird, wenn Sie Wächter nicht überprüfen, selbst mit vielen untergeordneten Bereichen.