$digest();
Processes all of the watchers of the current scope and its children. Because a watcher's listener can change the model, the $digest()
keeps calling the watchers until no more listeners are firing. This means that it is possible to get into an infinite loop. This function will throw 'Maximum iteration limit exceeded.'
if the number of iterations exceeds 10.
Usually, you don't call $digest()
directly in controllers or in directives. Instead, you should call $apply() (typically from within a directive), which will force a $digest()
.
If you want to be notified whenever $digest()
is called, you can register a watchExpression
function with $watch() with no listener
.
In unit tests, you may need to call $digest()
to simulate the scope life cycle.
var scope = ...; scope.name = 'misko'; scope.counter = 0; expect(scope.counter).toEqual(0); scope.$watch('name', function(newValue, oldValue) { scope.counter = scope.counter + 1; }); expect(scope.counter).toEqual(0); scope.$digest(); // the listener is always called during the first $digest loop after it was registered expect(scope.counter).toEqual(1); scope.$digest(); // but now it will not be called unless the value changes expect(scope.counter).toEqual(1); scope.name = 'adam'; scope.$digest(); expect(scope.counter).toEqual(2);
Please login to continue.