В области AngularJS $apply() вызывается для каждого обработчика событий (события ввода/ввода для директивы ввода, события изменения для выбранной директивы и т.д.) и некоторых других случаях.
См. небольшой пример. Кажется, что ngRepeat пересчитывается и перерисовывается при каждом нажатии клавиши, несмотря на то, что изменения происходят в другой области.
Было бы интересно узнать обоснование такого решения.