ฉันชอบใช้โรงงานเพื่อรับข้อมูลจากทรัพยากรของฉันอย่างเช่น
.factory("SweetFactory", [ "$http", "$q", "$resource", function( $http, $q, $resource ) {
return $resource("/sweet/app", {}, {
"put": {
method: "PUT",
isArray: false
},"get": {
method: "GET",
isArray: false
}
});
}]);
จากนั้นเปิดเผยโมเดลของฉันในบริการเช่นนี้ที่นี่
.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);
});
};
}]);
จากนั้นตัวควบคุมของฉันสามารถรวมไว้และเปิดเผยหรือทำในสิ่งที่มันถูกต้องในบริบทของมันเพียงแค่อ้างถึงบริการที่ฉีดเข้ามา
ดูเหมือนจะทำงานได้ดี แต่ฉันยังใหม่สำหรับเชิงมุม * การจัดการข้อผิดพลาดส่วนใหญ่ทิ้งไว้เพื่อความชัดเจน
return $q.when(Cache[id])
วิธีที่ง่ายในการเขียนผลตอบแทนในกรณีแรกคือ อย่างไรก็ตามสิ่งนี้ควรได้ผลและโทรกลับทุกครั้งเนื่องจากคุณสร้างสัญญาใหม่ทุกครั้ง