2016-10-28 58 views
0

我有這樣的代碼:如何將cordova getAppVersion包裝在變量承諾上?

var promiseVersionNumber; 
      if (typeof cordova !== 'undefined') { 
       console.log("I have cordova, I will try to get the AppversionNumeber"); 
       promiseVersionNumber = cordova.getAppVersion.getVersionNumber(); 
      } else { 
       console.warn("There is no cordova, I will use a dummyAppVersion"); 
       promiseVersionNumber = $q.when(dummyAppVersion); 
      } 

      return $q.when(
       (promiseVersionNumber).then(function(versionNumber){ 
        defaultConfig.version = versionNumber; 
        return dbAppInfo.put(defaultConfig); 
       }).then(function(putDefaultConfig){ 
       console.log("appConfig was created and saved on Database"); 

       return dbAppInfo.put({ 
        _id: 'myLastUpdate', 
        myLastUpdate: today, 
        debug: todayDebug 
       }); 
       }).catch(function(error){ 
       console.error("There was an error while initAppConfig appConfig on Database"); 
       console.dir(error); 
       console.groupEnd("initAppConfig"); 
       return error; 
      })); 

在瀏覽器與我的假promiseVersionNumber所有工作正常,但在設備上我得到這個錯誤:

TypeError: promiseVersionNumber.then(...).then(...).then(...).catch is not a function

我該如何正確包裝cordova.getAppVersion.getVersionNumber()

回答

0

只要使用ngCordova,那將是簡單的方法。 http://ngcordova.com/docs/plugins/appVersion/

+0

看着ngCordova [這裏](https://github.com/driftyco/ng-cordova/blob/master/src/plugins/appVersion.js),難道是'cordova.getAppVersion.getVersionNumber() '不會回覆一個承諾,而只是一個普通的對象? – distante

+0

不,他們確實返回承諾... getVersionNumber:function(){ var q = $ q.defer(); cordova.getAppVersion.getVersionNumber(function(version){ q.resolve(version); }); return q.promise; }, – iCediCe

+0

我的意思是沒有ngCordova包裝。 (爲了安全我會用ngCordova) – distante