
Verwendung von $scope.watch und $scope.$apply
Heute möchte ich euch ein wenig erklären wie ihr in AngularJs $scope.watch und $scope.$apply verwenden könnt.
Zuerst solltet ihr einmal verstehen, dass AngularJs ein Konzept mit dem Namen Digest Cycle verwendet. Dieser Cycle kann als Loop betrachtet werden, während dem Angular überpüft ob Änderungen bei den überwachten Variablen in den $scopes gemacht wurden.
Dass heißt das wenn eine Variable als watched markiert wurde, dann wird in jeder Iteration der Schleife überprüft ob die Variable geändert wurde.
Da die Überwachung von jeder Variable in eurem $scope zu Perfomance-Problemen führen würde, sind nicht alle Objekte im $scope als watched markiert.
AngularJs bietet 2 Wege um eine $scope Variable als watched zu markieren:
- Durch die Verwendung des Ausdrucks in eurem Template: <span>{{var}}</span>
- Durch manuelles Hinzufügen via des $watch Service
Die erste Methode habt ihr wahrscheinlich schon öfter gesehen, sie ist sehr verbreitet.
Mit der zweiten Variante könnt ihr eure eigenen Watches entwickeln und eigenen Code hinzufügen, der ausgeführt wird wenn ein Wert geändert wird, zb so:
$scope.$watch('var', function() {
alert('Der Wert wurde verändert!');
});