2016-04-26 4 views
1

Ich bin immer noch neu zu eckig so leid, wenn meine Frage ein wenig ist ... Ich habe einen Dienst erstellt, die einige REST-API aufrufen und ich es mit Versprechungen implementiert.

Ich bin im Moment mit diesem Versprechen Rückkehr Liste von Daten an den Controller und steckte es in $scope.

Ich möchte, dass, wenn ich Daten in dieser Funktion empfange auch retrieved Daten zu
Service, so dass ich den Dienst nicht erneut aufrufen muss, wenn ich bereits Daten habe.Service-Variable zugewiesene Daten, aber es ist immer undefiniert, wenn auf zugegriffen

app.service("MyService", function ($http, $q) { 
this.OrignalDataFromService = null; 
return { 
    var deferred = $q.defer(); 
    ... 
    deferred.resolve(data); 
    this.OrignalDataFromService = data; 
    return deferred.promise; 
    } 
} 

Problem dabei ist, dass, wenn ich OrignalDataFromService vom Controller zugreifen es immer undefined ist (in Versprechen, das ich bekommen Daten es nur variable Service, der nicht definiert ist), warum ist das so?
Ich verstehe nicht wirklich, wo Modell in eckigen App residieren sollte.
Ist es $scope Variable in Controller und Dienste sind nur hier, um uns zu ermöglichen, Daten von irgendwo zu bekommen, oder sollte Modell im Dienst sein (als Variable)?

+0

Können Sie zeigen Sie Ihre Controller-Code? Wie greifen Sie auf die Daten vom Service in Ihrem Controller zu? –

+2

Der Code in der Frage ist nicht gültig JS. – estus

Antwort

1

Werfen Sie einen Blick auf die Fiedler here . Sie müssen die Variable angeben, in der Sie die ursprünglichen Daten beibehalten.

Dienst

myApp.service('myService', function($q) { 
    return { 
    OrignalDataFromService: null, 
    getData: function() { 
     var deferred = $q.defer(); 
     var data = ["Data-1", "Data-2", "Data-3"] 
     deferred.resolve(data); 
     this.OrignalDataFromService = data; 
     return deferred.promise; 
    } 
    } 
}); 
3

OrignalDataFromService ist private Variable für den Dienst, so dass, wenn Sie darauf zugreifen möchten, können Sie in Objekt

check this

Beispiel zurückkommen müssen:

app.service("MyService", function ($http, $q) { 
this.OrignalDataFromService = null; 
return { 
    originalData: this.OrignalDataFromService 
    } 
} 
Verwandte Themen