2014-01-07 6 views
6

私はAngularJS Cordovaアプリケーションを使用しており、現時点ではすべてがうまくいっています。次のステップは、Cordova ConnectプラグインなどのアプリケーションにCordovaプラグインを追加して、ネットワーク接続がオンになっているかどうかをチェックし、ネットワークイベントをリスンすることです。AngularJSのCordova/Phonegapイベントに最適な場所

これらのネットワークイベントをリッスンし、デバイスがインターネットに接続している場合はConnectプラグインに尋ねます。そうでない場合はエラーページにリダイレクトされます。

私は、AngularJSアプリケーションでアプリケーションの起動時にこれらのイベントを登録する場所を見つけるのに苦労しています。

メインブロック、コンフィグブロック、または工場/サービス/プロバイダの内部にあるべきですか?

これらのAngularJS以外のデバイスイベントはどこに置いていますか?

fx。私はそれが私のapp.jsをmyModule.run、ちょうど素晴らしい作品持つ

document.addEventListener("online", yourCallbackFunction, false);

答えて

2

は、私が実際に存在し、他のコルドバのイベントを持っています。

enter image description here

MyModule.run(function ($rootScope, $http, dataService, $window, $q, $location, localize) { 

document.addEventListener("deviceready", onDeviceReady, false); 

function onDeviceReady() { 

    //Initialize anything you need to. aka: Google analytics. 

    //Set other evens you need to listen to. 
    document.addEventListener("online", onOnline, false); 
    document.addEventListener("offline", onOffline, false); 
} 
} 

この情報がお役に立てば幸い!

0

これはうまく動作しますが、代わりにBrian fordのangular-phonegap-ready componentに基づいていたのは、このコンポーネントをコンポーネントに挿入して、phonegapのapiを呼び出すことです。 Document.addEventListener( "deviceready"、function);アプリケーションapp.module( 'apptitle'、['Phonegap_component_goes_here'])を作成するときにbt.phonegap.readyを挿入するたびに一度呼び出されます。次に、関数をキューに追加するために作成したコンポーネントを追加します。そして、私がこれらの機能を使いたいときはいつでも、私は自分のコンポーネントを注入し、そこにある関数を呼び出します。私が何をしたかをより良く理解するために私のレポをチェックアウト:ここでは、コンポーネントのhttps://github.com/malikov/simple-angular-phonegap-appと例:https://github.com/malikov/angular-phonegap-storage、あなたがここに非常に役立つチュートリアルを見つけるこれは

+0

私はあなたが毎回phonegapready()を呼び出しているのを見ました。これはたくさんあります。私はphonegapready()が最初から呼び出されるべきだと思います。これをチェックして; http://stackoverflow.com/questions/20692203/cordova-deviceready-event-not-firing-from-within-angular-run-block/21762012#21762012 – numediaweb

0

に役立ちます願っています:チャンスのために http://mobileangularui.com/blog/your-first-phonegap-app-with-mobile-angular-ui/

をリンクすることを

.factory('getCurrentPosition', function(deviceReady, $document, $window, $rootScope){ 
    return function(done) { 
    deviceReady(function(){ 
     navigator.geolocation.getCurrentPosition(function(position){ 
     $rootScope.$apply(function(){ 
      done(position); 
     }); 
     }, function(error){ 
     $rootScope.$apply(function(){ 
      throw new Error('Unable to retreive position'); 
     }); 
     }); 
    }); 
    }; 
}); 
:彼らはdevicereadyサービスを利用furhterサービスで

// Create a service 
angular.module('WeatherApp.services.Cordova', []) 

.factory('deviceReady', function(){ 
    return function(done) { 
    if (typeof window.cordova === 'object') { 
     document.addEventListener('deviceready', function() { 
     done(); 
     }, false); 
    } else { 
     done(); 
    } 
    }; 
}); 

:変更の上、ここでは短い要約です

関連する問題