У меня возникли проблемы с отправкой и ловом событий в Angular.Как поймать событие в контроллере, которое выбрано директивой в Angular?
Рассмотрим plunker: Plunk..
Как вы можете видеть, у меня есть два контроллера и директивы. Директива «живет» в контроллере 1. Когда что-то происходит в директиве, я хочу поймать это событие в контроллере 2. Как вы можете видеть на панели, на консоль ничего не записывается; событие не зацепилось.
Я также пытался воспользоваться услугой. В этом случае я создал метод в службе, и когда этот метод вызывается, я бросаю событие. Как и в Plunk, я слушаю событие в контроллере 2, но это также не сработало.
Где все это сводится к тому, что я хочу, чтобы вызвать метод на другой контроллер ..
Спасибо за ответ. Если вы правильно поняли, вы предлагаете создать $ watch на контроллере 2 на переменной/свойстве сервиса? – Martijn
@Martijn, $ watch будет срабатывать только при обнаружении изменения (и при первом его инициализации). Это может сработать для вашего сценария, но это может и не так. Если событие уже запущено до создания контроллера 2, просто вызовите метод в службе как часть инициализации контроллера 2, чтобы определить, произошло ли событие. Если событие может произойти, когда контроллер 2 существует, используйте также часы $. –
В моем сценарии я не думаю, что контроллер 2 существует, когда событие запускается. Поэтому вы предлагаете «просто вызвать метод в службе как часть инициализации контроллера 2, чтобы определить, произошло ли событие». Я не знаю точно, что вы подразумеваете под этим. Не могли бы вы объяснить это немного больше? – Martijn