ここで我慢してください。私は次のような他の答えがあることを知っています: AngularJS: Service vs provider vs factory
ただし、いつファクトリよりもサービスを使用するかはまだわかりません。
私が言えることから、ファクトリは、複数のコントローラーから呼び出すことができる「共通の」関数を作成するために一般的に使用されます:共通のコントローラー関数の作成
Angular のドキュメントは、サービスよりも工場を好むようです。彼らは factory を使用するときに「サービス」とさえ呼んでいますが、これはさらに混乱を招きます。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()
];
}