Ich habe eine Fabrik, wo ich Daten von einem Server bekommen die $ http Methoden verwenden:Angular JS rettenden Informationen von der Fabrik AJAX Anfrage
.factory('$factory', function ($q, $http, $timeout, $state, $ionicHistory, $localstorage) {
var obj = [];
var functions = {
getData: function() {
var dfd = $q.defer();
if(!obj){
$http({
url: remoteUrl+'/getdata',
method: 'POST',
data: {}
}).then(function(response) {
$timeout(function(){
obj = response.data;
dfd.resolve(response.data);
}, 2000)
}, function(response) {
}
}else{
return obj;
}
return dfd.promise;
}
}
}
Also das die Daten erhält und setzt es in ein Objekt. Korrigiere mich, wenn ich falsch liege, aber diese Methode der Verwendung einer Fabrik für diese Art von Aktion ist so, dass sie nicht an einen Controller gebunden ist und überall in meiner Anwendung verwendet werden kann.
In diesem Sinne möchte ich es schaffen, damit ich die Daten überall in meiner App erhalten kann, ohne jedes Mal den Server abfragen zu müssen. d. h. sobald der Server abgefragt wird, speichert die Fabrik die Antwort auf ein Objekt (so wie ich es jetzt mache). Aber ich habe Probleme beim späteren Zugriff auf die Daten in einem anderen Controller.
Ich habe begonnen, was ich denke, sollte es aussehen, indem Sie die if (! Obj) -Zeile, aber in der else-Anweisung kann ich nicht einfach das Obj-Objekt zurückgeben. Es wirft Fehler aus, da es kein Versprechen gibt, wie es auch erwartet wird.
Ich bin mir nicht sicher, ob ich damit sogar auf dem richtigen Weg bin.
Dank
Sie diesen Artikel SO finden könnte nützlich: http://stackoverflow.com/questions/33968655/how-can-i-use-my-json-without-triggering-a- Neu-API-Anfrage-Everytime-ich-will-zu-u/33969521 # 33969521 – sjokkogutten