Angenommen, ich habe eine ng-Wiederholung mit einem großen Array.
Wenn ng-repeat ausgeführt wird, wird jedes Element dieses Arrays einem isolierten Bereich hinzugefügt und das Array selbst in einem Bereich gespeichert. Das bedeutet, dass $ Digest das gesamte Array auf Änderungen überprüft und darüber hinaus jedes einzelne Element in diesem Array auf Änderungen überprüft .
Sehen Sie diesen Plunker als Beispiel dafür, wovon ich spreche.
In meinem Anwendungsfall ändere ich nie ein einzelnes Element meines Arrays, sodass ich sie nicht beobachten muss. Ich werde immer nur das gesamte Array ändern. In diesem Fall würde ng-repeat die Tabelle in ihrer Gesamtheit neu rendern. (Wenn ich mich irre, lass es mich wissen.)
In einem Array von (sagen wir) 1000 Zeilen sind das 1000 weitere Ausdrücke, die ich nicht auswerten muss.
Wie kann ich jedes Element vom Watcher abmelden, während ich noch das Hauptarray beobachte?
Vielleicht könnte ich, anstatt mich abzumelden, mehr Kontrolle über meinen $ Digest haben und irgendwie jede einzelne Zeile überspringen?
Dieser spezielle Fall ist tatsächlich ein Beispiel für ein allgemeineres Problem. Ich weiß, dass $ watch eine Abmeldungsfunktion zurückgibt , aber das hilft nicht, wenn eine Direktive die Uhren registriert, was die meiste Zeit der Fall ist.