Umgang mit einem Versprechen in einer Ionischen/Cordova-Anwendung

Zur Zeit arbeite ich an einem Ionic/Cordova Anwendung, eine to-do-Anwendung. Ich bin mit der ngCordova Bibliothek für eine einfachere Verwendung der cordova-plugins. Ich bin auch mit der Sqlite plugin von litehelpers (GitHub-Seite).

Mein problem ist, über das richtige Verständnis des JavaScript-verspricht Verhalten. Ich habe ein Eckiges service namens "Projekte", die machen verwenden der SQLite-plugin, und ein "Aufgaben" - controller, die an ihn delegiert.

JS:

angular.module('myapp.services', [])

.factory("Projects", ["$ionicPlatform", "$cordovaSQLite", "$window", "$q",
  function($ionicPlatform, $cordovaSQLite, $window, $q) {
    return {
      //SOME FUNCTIONS..
      getCurrentProject: function() {
        var q = $q.defer();

        $ionicPlatform.ready(function() {
          $cordovaSQLite.execute(db, 
              "SELECT id_project, name FROM projects WHERE active = 1").then(
              function(res) {

              q.resolve(res.rows.item(0));
          }, function(err) {
            q.reject(err);
            console.error(err.message);
          });
        });

        return q.promise;
      }
    };
  }
]);

Ich will diese Funktion gibt ein Objekt zurück, das das Ergebnis meiner Abfrage.

Den promises und callback keywords sind verwirrend mich.

Habe ich versucht, ein paar Möglichkeiten, um mein problem zu lösen, aber wenn ich rufe (in meinem controller):

var currentProject = Projects.getCurrentProject();

Und dann zu versuchen, überprüfen Sie Ihre Werte mit:

console.log("ID -> " + currentProject.id_project);
console.log("NAME -> " + currentProject.name);

Bekomme ich immer undefined. Wie gehe ich mit einem promise im Ionischen/Cordova-Anwendung?

Gelöst

@bardzusny Antwort völlig aus, mich erkennen, wo ich war falsch, danke Euch allen 🙂

InformationsquelleAutor cansi | 2015-05-01
Schreibe einen Kommentar