我有一个AngularJS Cordova应用程序,目前一切都很顺利。我的下一步是将Cordova插件添加到应用程序(如Cordova Connect插件),以检查网络连接是否已打开并侦听网络事件。
计划是收听这些网络事件并询问Connect插件是否设备已连接到互联网,否则我将重定向到错误页面。
我正在努力在我的AngularJS应用程序中找到一个位置,在应用程序启动时注册这些事件。
它们应该在主运行块,配置块还是某种工厂/服务/提供商内?
你们在哪里放置这些外部AngularJS设备事件?
FX。
document.addEventListener("online", yourCallbackFunction, false);
答案 0 :(得分:2)
我有myModule.run我的app.js并且效果很好,我实际上还有其他的cordova活动。
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);
}
}
希望这有帮助!
答案 1 :(得分:0)
嗯这个工作正常,但是我做的是基于Brian ford的angular-phonegap-ready component,是在我的组件中注入这个组件来调用phonegap的api,所以不要把所有内容都放在app.js中。 Document.addEventListener( “deviceready”,功能);每当我们在创建app 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,希望这有助于
答案 2 :(得分:0)
你在这里找到一个非常有用的教程: http://mobileangularui.com/blog/your-first-phonegap-app-with-mobile-angular-ui/
如果上述链接发生变化,请参阅以下简短摘要:
// 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();
}
};
});
在一项服务中,他们使用deviceready服务:
.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');
});
});
});
};
});