В нашем приложении (чего уж тут скрывать — http://m.mamba.ru, тач-версия) всё построено на встроенных в angular маршрутах.
При этом, как известно, шаблон страницы отрисовывается внутри тега ng-view.
Появилось несколько страниц, на которых внутри контента (это важно) нужно показывать баннер.
Сделал я это так:
внутри списка пользователей в html:
И заметил я, что после показа страницы, на которой используется этот контроллер, функция setCanShowAd() продолжает вызываться и на других страницах. И ещё забавнее, что вызываться она будет несколько раз, если несколько раз зайти на эту страницу.
Что, в общем-то, логично, хотя и печально. Получается, что AngularJS сам не снимает обработчики событий для таких контроллеров (возможно, и для обычных контроллеров тоже), что, наверное можно объяснить и идеологическими соображениями и сложностью реализации.