Per favore, abbi pazienza qui. So che ci sono altre risposte come: AngularJS: Service vs provider vs factory
Tuttavia, non riesco ancora a capire quando useresti il servizio in fabbrica.
Da quello che posso dire factory è comunemente usato per creare funzioni "comuni" che possono essere chiamate da più controller: Creazione di funzioni di controller comuni
I documenti angolari sembrano preferire la fabbrica al servizio. Si riferiscono anche al "servizio" quando usano la fabbrica che è ancora più confusa! http://docs.angularjs.org/guide/dev_guide.services.creating_services
Quindi quando si dovrebbe usare il servizio?
C'è qualcosa che è solo possibile o molto più semplice fatto con il servizio?
C'è qualcosa di diverso che accade dietro le quinte? Differenze prestazioni / memoria?
Ecco un esempio A parte il metodo di dichiarazione, sembrano identici e non riesco a capire perché dovrei fare l'uno contro l'altro. http://jsfiddle.net/uEpkE/
Aggiornamento: Dalla risposta di Thomas sembra implicare che il servizio è per una logica e una fabbrica più semplici per una logica più complessa con metodi privati, quindi ho aggiornato il codice del violino di seguito e sembra che entrambi siano in grado di supportare funzioni private?
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()
];
}