0

使用 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);
              }
        });
  });

当感应到耳机插孔时,我试图关闭在我的控制器中创建的离子弹出窗口。

4

1 回答 1

1

您正在从.runAngular 应用程序的一部分定义事件。

所以; 与控制器通信;您需要使用: - 在您的控制器中监视的应用程序上的全局变量($rootScope):这是一个丑陋的解决方案;我不建议 - 在您的应用程序中广播/事件:这是干净的解决方案

你需要 ; 当您检测到要向您的应用广播新闻的事件时:

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

在您的控制器内;你现在正好赶上这个事件:

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


});

另一种解决方案必须在控制器中设置您的事件侦听器

于 2017-06-08T17:36:41.430 回答