2016-04-09 12 views
0

Ich möchte ein Array von Objekten bearbeiten, die durch eine ng-repeat an die Ansicht gebunden sind. Wie kann ich die Aktualisierung des Bereichs vermeiden, bis das gesamte Array geändert wurde?Wie (vorübergehend) vermeiden Sie einen Digest-Zyklus beim Bearbeiten einer Bereichsvariablen

Hier ist ein einfaches Beispiel:

Ich mag würde jeden obj in Array aktualisieren und erst dann den $ scope zu aktualisieren. Da das Array Objekte enthält, kann ich sie nicht einfach in eine andere Variable kopieren.

<div ng-click="updateAll()" ng-repeat="obj in array">obj.value</div> 

angular.module("test", []).controller('Ctrl', function($scope) { 
    $scope.array = [{val: 1}, {val: 2}, {val: 3}); 

    $scope.updateAll = function() { 
     for (var i = $scope.array.length - 1; i >= 0; i--) { 
      $scope.array[i].val2 = i; 
     }; 
    }; 
}); 

Antwort

0

Ich denke, die einzige Möglichkeit ist, ein weiteres Array zu bearbeiten und zu Ihrem ursprünglichen Array gesetzt, sobald alle Updates fertig sind.

+0

Mein Array enthält Objekte. Ich würde es hassen, es tief zu klonen (könnte Daten verlieren, wie Getter ...) – Sergej

+0

Warum willst du dieses Verhalten? Zeigen Sie eine Liste der Elemente an und bieten Sie die Möglichkeit, diese nacheinander zu aktualisieren und möchten nicht, dass die Elemente gespeichert werden, bevor der Benutzer auf Speichern oder Ähnliches geklickt hat? – kabaehr

+0

Es ist einfach ein Leistungsproblem. Ich möchte den $ 150-Bereich für alle meine Objekte nicht aktualisieren, wenn ein Update ausreichen würde ... – Sergej