Будь ласка, несіть зі мною тут. Я знаю, що є інші відповіді, такі як: 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()
];
}