Ich benutze gerne eine Fabrik, um die Daten von meiner Ressource zu erhalten.
.factory("SweetFactory", [ "$http", "$q", "$resource", function( $http, $q, $resource ) {
return $resource("/sweet/app", {}, {
"put": {
method: "PUT",
isArray: false
},"get": {
method: "GET",
isArray: false
}
});
}]);
Dann stellen Sie mein Modell hier wie folgt in den Dienst
.service("SweetService", [ "$q", "$filter", "$log", "SweetFactory",
function ($q, $filter, $log, SweetFactory) {
var service = this;
//Object that may be exposed by a controller if desired update using get and put methods provided
service.stuff={
//all kinds of stuff
};
service.listOfStuff = [
{value:"", text:"Please Select"},
{value:"stuff", text:"stuff"}];
service.getStuff = function () {
var deferred = $q.defer();
var promise = SweetFactory.get().$promise.then(
function (response) {
if (response.response.result.code !== "COOL_BABY") {
deferred.reject(response);
} else {
deferred.resolve(response);
console.log("stuff is got", service.alerts);
return deferred.promise;
}
}
).catch(
function (error) {
deferred.reject(error);
console.log("failed to get stuff");
}
);
promise.then(function(response){
//...do some stuff to sett your stuff maybe fancy it up
service.stuff.formattedStuff = $filter('stuffFormatter')(service.stuff);
});
return service.stuff;
};
service.putStuff = function () {
console.log("putting stuff eh", service.stuff);
//maybe do stuff to your stuff
AlertsFactory.put(service.stuff).$promise.then(function (response) {
console.log("yep yep", response.response.code);
service.getStuff();
}).catch(function (errorData) {
alert("Failed to update stuff" + errorData.response.code);
});
};
}]);
Dann können meine Controller es einschließen und verfügbar machen oder das tun, was es für richtig hält, indem sie einfach auf den injizierten Service verweisen
Scheint in Ordnung zu funktionieren. Aber ich bin ein bisschen neu im Winkel. * Fehlerbehandlung aus Gründen der Übersichtlichkeit meistens weggelassen
return $q.when(Cache[id])
. Auf jeden Fall sollte dies funktionieren und den Rückruf jedes Mal aufrufen, da Sie jedes Mal neue Versprechen erstellen.