// 本服务设置了一个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);
}
]);
转载于:https://my.oschina.net/u/1457074/blog/373344