Bitte ertrage es hier mit mir. Ich weiß, dass es andere Antworten gibt, wie zum Beispiel: AngularJS: Service gegen Anbieter gegen Fabrik
Ich kann jedoch immer noch nicht herausfinden, wann Sie den Service über die Fabrik nutzen würden.
Soweit ich weiß, wird Factory häufig verwendet, um "allgemeine" Funktionen zu erstellen, die von mehreren Controllern aufgerufen werden können: Erstellen gemeinsamer Controller-Funktionen
Die Angular-Dokumente scheinen die Fabrik dem Service vorzuziehen. Sie beziehen sich sogar auf "Service", wenn sie die Fabrik benutzen, was noch verwirrender ist! http://docs.angularjs.org/guide/dev_guide.services.creating_services
Wann würde man den Service nutzen?
Gibt es etwas, das nur mit Service möglich oder viel einfacher ist?
Gibt es etwas anderes, das sich hinter den Kulissen abspielt? Leistungs- / Speicherunterschiede?
Hier ist ein Beispiel. Abgesehen von der Deklarationsmethode scheinen sie identisch zu sein, und ich kann nicht herausfinden, warum ich eins gegen das andere mache. http://jsfiddle.net/uEpkE/
Update: Aus Thomas 'Antwort geht hervor, dass der Service für eine einfachere Logik und die Factory für eine komplexere Logik mit privaten Methoden gedacht ist. Deshalb habe ich den folgenden Geigencode aktualisiert und es scheint, dass beide private Funktionen unterstützen können.
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()
];
}