2016-10-28 1 views
0

Ich habe diesen Code:Wie cordova getAppVersion mit einem variablen Versprechen zu umhüllen?

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; 
      })); 

Im Browser mit meinem Dummy promiseVersionNumber funktioniert alles in Ordnung, aber auf dem Gerät bekomme ich diesen Fehler:

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

Wie kann ich cordova.getAppVersion.getVersionNumber() richtig wickeln?

Antwort

0

Verwenden Sie einfach ngCordova, das wäre der einfache Weg.

+0

Wenn Sie ngCordova [hier] (https://github.com/driftyco/ng-cordova/blob/master/src/plugins/appVersion.js) betrachten, könnte es sein, dass 'cordova.getAppVersion.getVersionNumber() 'gibt kein Versprechen zurück, sondern nur ein einfaches Objekt? – distante

+0

nein sie geben Versprechen zurück ... getVersionNumber: function() { var q = $ q.defer(); cordova.getAppVersion.getVersionNumber (Funktion (Version) { q.resolve (Version); }); Rückkehr q.Promise; }, – iCediCe

+0

Ich meine, ohne die ngCordova Wrapper. (Nur um sicher zu sein, werde ich ngCordova verwenden) – distante

Verwandte Themen