Use Case:Datenobjektvariable in Winkeldienst über Ajax-Aufruf zu aktualisieren
ich einen Dienst in Winkel erstellen möchten, die mir ein Datenobjekt zurück, die eine Variable in Betrieb ist, die über einmal aktualisiert wird Ajax Anruf.
Zum ersten Mal, bis Daten nicht über Ajax empfangen werden, wird {} zurückgegeben. Sobald Daten empfangen werden, werden diese Daten immer zurückgegeben.
Ausgabe:
Die Daten werden ordnungsgemäß in Ajax erhalten. Die Struktur der empfangenen Daten ist ein Objekt. Ich habe es durch Anmeldung in der Konsole überprüft. Das nächste Mal, wenn dieser Dienst aufgerufen wird, ruft er erneut ajax auf, da die Variable im Dienst nicht aktualisiert wird.
Kann jemand vorschlagen, warum ist das passiert und was wäre der idle Weg, um oben zu erreichen?
Code:
angular.module('myapp', []).service('TagService', function ($http, CONSTANTS) {
this.tagsData = {};
this.getTagsData = function (cacheMode) {
if (JSON.stringify(this.tagsData) != "{}") {
console.log("returning from cache");
return this.tagsData;
}
$http({
method: 'GET',
url: CONSTANTS['base_url_s'] + 'api/v1/get_all_tags_data/',
params: {'params': JSON.stringify({})}
}).success(
function (data, status, headers, config) {
if (data && data["success"] && data["success"] == true) {
this.tagsData = data["data"];
}
return this.tagsData;
}).error(
function (data, status, headers, config) {
return {};
});
};
});
Vielen Dank für solch ein großes response..really es zu schätzen wissen !! – abhinsit
Ihre Lösung funktionierte gut, aber für den Fall, wenn (JSON.stringify (this.tagsData)! = "{}") { console.log ("aus dem Cache zurück"); Rückgabe defer.resolve (TagsData); } es funktioniert nicht .... es sagt undefined Funktion TagService.getTagsData – abhinsit
Zum ersten Mal, bis Daten {} es ruft Ajax Returns Versprechen, die gut funktioniert, aber danach, wenn es erneut aufgerufen wird und soll die Daten zurückgeben direkt es wirft Fehler: TagService.getTagsData (...) ist undefined – abhinsit