2017-06-08 13 views
0

Ionic v1を使用して、私のapp.runのイベントリスナが起動したときにコントローラの関数を呼び出そうとしています。このイベントは、ヘッドフォンジャックの変更を検出するCordova(Phonegap)プラグインによって作成されます。コントローラ内の.runのイベントリスナからの呼び出し関数

解決策が見つからないので、何か間違っている必要があります。ここに私の例があります:

(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); 
       } 
     }); 
    }); 

ヘッドホンジャックが感知されたら、私は自分のコントローラーで作成されたイオンポップアップを閉じようとしています。

+0

にイベントリスナー権を設定する必要があります:あなたは、イベントをキャッチするために、今ジュストてきましたか?それはそれです:https://github.com/EddyVerbruggen/HeadsetDetection-PhoneGap-Plugin – aorfevre

+0

イエップhttps://github.com/EddyVerbruggen/HeadsetDetection-PhoneGap-Plugin – genepool99

答えて

1

角度イベントの一部である.runからイベントを定義しています。

したがって、コントローラと通信する。 - コントローラで監視されているアプリケーションのグローバル変数($ rootScope):これは醜い解決策です。私はお勧めしません - ブロードキャスト/あなたのアプリのイベントで:これはクリーンなソリューションです

あなたが必要です;あなたのアプリにブロードキャストするイベントを検出すると、ニュース:

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

コントローラ内にあります。

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


}); 

別の解決策あなたはヘッドフォン検出のために使用しているプラ​​グインコントローラ

+0

私はそれを試しましたが、私は取得します:Uncaught ReferenceError:$ rootScope is定義されていません – genepool99

+0

$ rootScopeを注入します。 app.run(function($ ionicPlatform、$ rootScope){ – aorfevre

+0

ありがとう!私はかなりイオン性/角張っている。 – genepool99

関連する問題