Вызов функции в контроллере из 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) {
});
Другое решение должно было бы установить ваш слушатель события прямо в контроллере