Например, мы добавили выражение {{ hello }} и ангуляр создал для него функцию, которая будет отлеживать изменения. Затем мы добавили директиву ng-click и навесили обработчик. Понятно, ангуляр запускает $digest цикл, собственно, благодаря которому 2-way data binding работает. НО, процитирую:
Angular не так прост. Среда AngularJS не вызывает $digest напрямую, она вызывает функцию $scope.$apply(), которая вызывает $rootScope.digest(). И в результате digest-цикл в $rootScope поочередно посещает дочерние $scope и вызывает их digest-циклы.
Зачем запускается digest на rootScope, если там будет много вотчеров то приложение будет тормозить( или имеется ввиду что на parent scope он не трогает)?
если выше верно - то как быть с parent scope, если, допустим, есть модель в $rootScope и она может изменяться в любом контроллере?
а что если дочерних много - какая глубина будет ?