Angular模塊監聽deviceready事件

// 本服務設置了一個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);
        }
    ]);
相關文章
相關標籤/搜索