demiurge
@demiurge
Веб-разработчик

Как работать с событиями (events) в AngularJS?

Начал ковырять Angular, и возник вопрос по событиям. Что делать если требуется общаться контроллерам, не подчиненным друг другу? Для таких случаев есть emit и broadcast, как я понял, а что делать если контррллеры равноправны? Вешать на rootScope или создать один родительский контроллер, и работать через него? Подскажите с архитектурой, пожалуйста.
  • Вопрос задан
  • 2977 просмотров
Пригласить эксперта
Ответы на вопрос 5
maxaon
@maxaon
Можете организовать общение просто через скоупы.
var evManager=$scope.$new(true);
Можно поместить создание в сервис.
Главное сделайте так, чтобы при уничтожении ваших двух контроллеров, уничтожался и созданный ранее, для того, чтобы избежать утечек памяти. (Если необходимо на протяжении жизни всего приложения создавайте новый скоуп от $rootScope)
Ответ написан
maxaon
@maxaon
Да, если не чистить за собой, будет плохо. Но angular, по крайней мере последние версии, позаботился об утечках памяти, позаботился об этом, и если вы удаляете скоуп, то удаляются все слушатели событий.
Ответ написан
demiurge
@demiurge Автор вопроса
Веб-разработчик
т.е. создать некий сервис, в нем менеджер событий и делать инъеккцию сервиса в контроллеры?
Ответ написан
Комментировать
demiurge
@demiurge Автор вопроса
Веб-разработчик
jsfiddle.net/simpulton/GeAAB вот нашел как через rootScope, это нормально?
Ответ написан
Комментировать
demiurge
@demiurge Автор вопроса
Веб-разработчик
Если кому будет интересно: stackoverflow.com/questions/18856341/how-can-i-unr...

Человек объясняет как и почему происходит утечка памяти если не "чистить за собой"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы