กรุณาอดทนกับฉันที่นี่ ฉันรู้ว่ามีคำตอบอื่น ๆ เช่น: AngularJS: บริการกับผู้ให้บริการกับโรงงาน
อย่างไรก็ตามฉันยังไม่สามารถคิดออกเมื่อคุณต้องการใช้บริการมากกว่าโรงงาน
จากสิ่งที่ฉันสามารถบอกได้ว่าโรงงานใช้กันทั่วไปเพื่อสร้างฟังก์ชั่น "ทั่วไป" ที่สามารถเรียกใช้โดยตัวควบคุมหลายตัว: การสร้างฟังก์ชั่นตัวควบคุมทั่วไป
เอกสารเชิงมุมดูเหมือนจะชอบโรงงานมากกว่าบริการ พวกเขายังอ้างถึง "บริการ" เมื่อพวกเขาใช้โรงงานซึ่งยิ่งทำให้สับสน! http://docs.angularjs.org/guide/dev_guide.services.creating_services
ดังนั้นเมื่อหนึ่งจะใช้บริการ
มีบางสิ่งที่เป็นไปได้หรือทำได้ง่ายกว่ามากกับบริการ
มีอะไรแตกต่างที่เกิดขึ้นเบื้องหลังหรือไม่ ความแตกต่างด้านประสิทธิภาพ / หน่วยความจำ?
นี่คือตัวอย่าง นอกเหนือจากวิธีการประกาศพวกเขาดูเหมือนกันและฉันไม่สามารถหาสาเหตุที่ฉันทำอย่างใดอย่างหนึ่งกับคนอื่น http://jsfiddle.net/uEpkE/
อัปเดต:จากคำตอบของโทมัสดูเหมือนจะบอกเป็นนัยว่าการบริการนั้นมีไว้สำหรับตรรกะที่ง่ายขึ้นและโรงงานสำหรับตรรกะที่ซับซ้อนมากขึ้นด้วยวิธีการส่วนตัวดังนั้นฉันจึงอัปเดตรหัสซอด้านล่างและดูเหมือนว่าทั้งสองสามารถรองรับฟังก์ชั่นส่วนตัวได้หรือไม่
myApp.factory('fooFactory', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo; }
return {
setFoobar: function(foo){
addHi(foo);
},
getFoobar:function(){
return fooVar;
}
};
});
myApp.service('fooService', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo;}
this.setFoobar = function(foo){
addHi(foo);
}
this.getFoobar = function(){
return fooVar;
}
});
function MyCtrl($scope, fooService, fooFactory) {
fooFactory.setFoobar("fooFactory");
fooService.setFoobar("fooService");
//foobars = "Hi fooFactory, Hi fooService"
$scope.foobars = [
fooFactory.getFoobar(),
fooService.getFoobar()
];
}