Как вызвать контроллер один раз для модального диалога?

Вот plunkr, демонстрирующий мою проблему (вы должны открыть консоль). Как это попробовать?

  1. Нажмите показать модальное 2 раза.
  2. нажмите кнопку уведомления. Затем в консоли есть:

    Notification broadcasted. example.js:44 2 Notification received.

Что означает, что уведомление получено дважды. Это потому, что контроллер для модального вызывается при каждом open(). Моя проблема в том, что я просто хочу, чтобы он вызывался один раз для модального. Я знаю, что $on() возвращает функцию отмены регистрации, но в моем приложении зарегистрировано довольно много событий, и я не хочу отменять их регистрацию каждый раз при закрытии модального окна. Я также не могу иметь $on() где-либо еще, потому что мне нужно работать с самим диалогом. Нет ли более простого способа убедиться, что для каждого модального диалога у меня события $scope регистрируются только один раз?

1 ответ

PLNKR не работает (в настоящее время), и меньший PLNKR, показывающий только проблему, был бы лучше.

В ваших функциях open () и close () в ModalDemoCtrl как насчет переключения свойства $scope (например, $scope.showModal), которое отслеживает состояние вашего модального объекта. Когда он уже открыт, не вызывайте modelService() снова.

Другие вопросы по тегам