Пожалуйста, несите меня здесь. Я знаю, что есть и другие ответы, такие как: AngularJS: Сервис против провайдера vs factory
Однако я все еще не могу понять, когда вы будете использовать службу через factory.
Из того, что я могу сказать, factory обычно используется для создания "общих" функций, которые могут вызываться несколькими контроллерами: Создание общих функций контроллера
Документы Angular, похоже, предпочитают factory через службу. Они даже ссылаются на "сервис", когда они используют factory, что еще более запутанно! http://docs.angularjs.org/guide/dev_guide.services.creating_services
Итак, когда вы будете использовать сервис?
Есть ли что-то, что возможно или намного проще с обслуживанием?
Есть ли что-то другое, что происходит за кулисами? Различия в производительности/памяти?
Вот пример. Помимо метода декларирования, они кажутся одинаковыми, и я не могу понять, почему я делаю одно против другого. http://jsfiddle.net/uEpkE/
Обновление: От ответа Томаса, похоже, подразумевается, что служба для более простой логики и factory для более сложной логики с частными методами, поэтому я обновил код скрипки ниже, и кажется, что оба могут поддерживать частные функции?
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()
];
}