// 本服务设置了一个Angular模块监听deviceready事件。也可使用服务来监听 // deviceready事件,而后依赖于这个事件是否被触发来解析promise。 // 可使用这个CordovaService来肯定Cordova是否准备好了,事实上这里已经准备好了,并 // 且咱们还能够依赖于这个服务是否准备就绪来设置逻辑,使用方式以下: // angular.module('myApp', ['fsCordova']) // .controller('MyController', function ($scope, CordovaService) { // CordovaService.ready.then(function () { // // 此时Cordova已经准备好了 // }); // }); angular.module('fsCordova', []) .service('CordovaService', ['$document', '$q', function ($document, $q) { var d = $q.defer(), resolved = false; var self = this; this.ready = d.promise; document.addEventListener('deviceready', function () { resolved = true; d.resolve(window.cordova); }); // 检查一下以确保没有漏掉这个事件(以防万一) setTimeout(function () { if (!resolved) { if (window.cordova) { d.resolve(window.cordova); } } }, 3000); } ]);