Because $watch
is evaluated in every digest cycle. Change value of a ng-model
triggers digest cycle. This behavior is different from $scope.$digest()
, which only triggers digestion on current and child scopes.
I think ng-model
might NOT use $scope.$digest()
internally. It might use some other mechanism to trigger digest after value changes.