Rendite Versprechen Kantige service

Ich habe einen Dienst, der (wenn es alle gesagt und getan) aktualisiert einen Wert auf die Datenbank.

Möchte ich zum aktualisieren der Ansicht von scope basiert auf dem Ergebnis (Erfolg/scheitern), aber natürlich auch das http-Anforderung für den Dienst verwendet, ist asynchron, so dass der return-Wert ist nicht sofort verfügbar und kommt undefiniert in den controller.

Wenn ich den http-request im controller, würde ich ein update der Geltungsbereich innerhalb der callback-Funktion, aber da Im mit einem Dienst, der Bereich äääh... Umfang(?) nicht zur Verfügung stehen.

Im denken ist ein Versprechen, was ich brauche zurückkehren, aber vielleicht ist es etwas einfacher.

SERVICE

.service('doStuff',function($http){

    this.update = function(data) {

        $http.post('http://api.internet', data).then(function(res){ 

            return(res.data.result);

        });  

    }

})

CONTROLLLER

/* service is injected into controller etc. */

var result = doStuff.update(data);

p(result); //undefined (as expected)

Ich dachte mir, da ich der Rückkehr aus dem http-Rückruf, es würde warten, bis das Ergebnis verfügbar zu sein, vor der Rückgabe aber ich denke Im fehlt etwas.

  • Ihre Methode this.update nicht wirklich etwas zurückzugeben. Sie brauchen, um es zu ändern return $http.post(..)
InformationsquelleAutor yevg | 2017-01-16
Schreibe einen Kommentar