从.run中的eventlistener调用控制器中的函数

时间:2017-06-08 17:29:10

标签: cordova ionic-framework phonegap-plugins ionicpopup

使用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 个答案:

答案 0 :(得分:1)

您正在从角色应用程序的setTimeout部分定义事件。

因此;与控制器通信;你需要使用:   - 您的应用程序中的一个全局变量($ rootScope),在您的控制器中观看:这是一个丑陋的解决方案;我不推荐   - 在您的应用中播放/播放活动:这是一个干净的解决方案

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

.run

在你的控制器内;你现在有责任抓住这个事件:

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

另一种解决方案是必须在控制器中设置事件监听器