S'il vous plaît, restez avec moi ici. Je sais qu'il existe d'autres réponses telles que: AngularJS: Service vs fournisseur vs usine
Cependant, je ne sais toujours pas quand vous utiliserez le service par rapport à l'usine.
D'après ce que je peux dire, l'usine est couramment utilisée pour créer des fonctions "communes" qui peuvent être appelées par plusieurs contrôleurs: Création de fonctions de contrôleur communes
Les documents angulaires semblent préférer l'usine au service. Ils parlent même de "service" lorsqu'ils utilisent l'usine, ce qui est encore plus déroutant! http://docs.angularjs.org/guide/dev_guide.services.creating_services
Alors, quand utiliserait-on le service?
Y a-t-il quelque chose qui n'est possible ou beaucoup plus facile à faire avec le service?
Y a-t-il quelque chose de différent qui se passe dans les coulisses? Différences performances / mémoire?
Voici un exemple. À part la méthode de déclaration, ils semblent identiques et je ne peux pas comprendre pourquoi je ferais l'un contre l'autre. http://jsfiddle.net/uEpkE/
Mise à jour: D'après la réponse de Thomas, cela semble impliquer que le service est pour une logique plus simple et une usine pour une logique plus complexe avec des méthodes privées, j'ai donc mis à jour le code du violon ci-dessous et il semble que les deux sont capables de prendre en charge des fonctions privées?
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()
];
}