ich schon asked a question über das Thema verwenden, so ist dies ein Followup in der Tat:Daten vom Server in einem Dienst
ich einen Winkel Service erstellt werden soll, dass, wenn die App zum ersten Mal geladen wird, wird die Daten aus dem Abruf Server einmal und dann kann ich die Daten aus dem lokalen Service-Objekt abfragen. Hier ist, wie ich versuchte, es zu tun:
angular.module('my.services').factory('Properties', function ($http) {
var properties = $http.get("/properties");
return {
get: function (property) {
return properties[property];
}
}
});
Problem ist - $http.get()
asynchron ist und um zu erreichen, was ich versuche zu tun, ich habe es synchron zu verwenden. Gibt es eine Möglichkeit, dies mit "nativem" AngularJS zu tun? Oder muss ich einen XHR-Anruf dafür verwenden?
Nur zur Klarstellung: Der Unterschied zwischen dieser Frage und der ursprünglichen ist, dass ich nicht nur etwas mit property
tun möchte, wie es zum Protokoll drucken. Ich möchte tatsächlich property
als Schlüssel zu den Daten verwenden, die vom Server zurückgegeben werden. Wenn die Daten noch nicht da sind, wenn ein Controller get
aufruft - möchte ich warten, bis die Daten zurückgegeben werden.
Hier ist, was ich habe jetzt die sehr nicht elegant ist:
return {
get: function (property) {
while(!properties.$resolved) {
setTimeout(function() {}, 2000)
}
return properties[property];
}
}
In diesem Fall wird nichts von dem "get" zurückgegeben, denke ich. Liege ich falsch? – Avi