Kaynağımdan veri almak için bir fabrika kullanmayı severim.
.factory("SweetFactory", [ "$http", "$q", "$resource", function( $http, $q, $resource ) {
return $resource("/sweet/app", {}, {
"put": {
method: "PUT",
isArray: false
},"get": {
method: "GET",
isArray: false
}
});
}]);
Öyleyse modelimi burada bu şekilde hizmette gösterin
.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);
});
};
}]);
Daha sonra denetleyicilerim, onu dahil edebilir ve ortaya çıkarabilir veya yalnızca enjekte edilen Hizmete atıfta bulunarak bağlamında doğru olanı yapabilir. Ne olursa olsun.
İyi çalışıyor gibi görünüyor. Ama ben açısal için biraz yeniyim. * hata işleme çoğunlukla netlik sağlamak için dışarıda bırakılır
return $q.when(Cache[id])
. Her neyse, bu işe yaramalı ve her seferinde yeni vaatler oluşturduğunuz için her seferinde geri aramayı aramalıdır.