scope.$digest()
will fire watchers on the current scope, and on all of its children, too. scope.$apply
will evaluate passed function and run $rootScope.$digest()
.
The first one is faster, as it needs to evaluate watchers for current scope and its children. The second one is slower, as it needs to evaluate watchers for$rootScope
and all it’s child scopes.
When an error occurs in one of the watchers and you use scope.$digest
, it’s not handled via $exceptionHandler
service, so you need to handle exception yourself. scope.$apply
uses a try-catch
block internally and passes all exceptions to $exceptionHandler
.