Вызов функции в контроллере из EventListener в.run

Используя Ionic v1, я пытаюсь вызвать функцию в моем контроллере, когда срабатывает прослушиватель событий в моем app.run. Событие создается плагином Cordova (Phonegap), который обнаруживает изменения в гнезде для наушников.

Я, должно быть, делаю что-то не так, потому что не могу найти решение, которое работает. Вот мой пример:

(function() {
 var app = angular.module('mymodule', ['ionic']);
    app.run(function($ionicPlatform) {
        $ionicPlatform.ready(function() {
           if(window.HeadsetDetection){
                /*Monitor for changes in the headphone jack*/
                document.addEventListener('deviceready', function() {
                  window.HeadsetDetection.registerRemoteEvents(function(status){
                    // *HERE* is where I want to call or somehow trigger 
                        an action in my controller
                 });
                }, false);
              }
        });
  });

При обнаружении гнезда для наушников я пытаюсь закрыть ионное всплывающее окно, созданное в моем контроллере.

1 ответ

Решение

Вы определяете свои события из .run часть вашего углового приложения.

Следовательно; общаться с контроллером; вам нужно использовать: - глобальную переменную ($rootScope) в вашем приложении, которая отслеживается вашим контроллером: это уродливое решение; что я не рекомендую - Трансляция / о событии в вашем приложении: это чистое решение

Тебе нужно; когда вы обнаружите событие для трансляции в ваше приложение новостей:

$rootScope.$broadcast('headphones-Updated');

В вашем контроллере; у вас есть основания, чтобы поймать событие:

$scope.$on('headphones-Updated', function(event, args) {


});

Другое решение должно было бы установить ваш слушатель события прямо в контроллере

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