$timeout запускает $digest и перерисовывает страницу после того как выполнятся все функции в текущем цикле.
Выполнится всё вне таймаута => обновление вьюхи => стаботает таймаут => вьюха обновится ещё раз
Как первая работа - не плохо. Как уже писали выше - классов много.
Кстати, если сузить экран браузере так, чтобы появилась горизонтальная прокрутка, то при при прокрутке появляется баг f5.s.qip.ru/RFrXBkOf.png