// 本服務設置了一個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); } ]);