Как вызвать контроллер один раз для модального диалога?
Вот plunkr, демонстрирующий мою проблему (вы должны открыть консоль). Как это попробовать?
- Нажмите показать модальное 2 раза.
нажмите кнопку уведомления. Затем в консоли есть:
Notification broadcasted. example.js:44 2 Notification received.
Что означает, что уведомление получено дважды. Это потому, что контроллер для модального вызывается при каждом open(). Моя проблема в том, что я просто хочу, чтобы он вызывался один раз для модального. Я знаю, что $on() возвращает функцию отмены регистрации, но в моем приложении зарегистрировано довольно много событий, и я не хочу отменять их регистрацию каждый раз при закрытии модального окна. Я также не могу иметь $on() где-либо еще, потому что мне нужно работать с самим диалогом. Нет ли более простого способа убедиться, что для каждого модального диалога у меня события $scope регистрируются только один раз?
1 ответ
PLNKR не работает (в настоящее время), и меньший PLNKR, показывающий только проблему, был бы лучше.
В ваших функциях open () и close () в ModalDemoCtrl как насчет переключения свойства $scope (например, $scope.showModal), которое отслеживает состояние вашего модального объекта. Когда он уже открыт, не вызывайте modelService() снова.