私はAngularJS初心者です。factory
,service
、controller
の概念と相違点を理解し始めました。私が理解するように、factory
は、注入可能な「値オブジェクト」を返すために使用されます。私はこのような何かを見てきましたほとんどの例:私のcontroller
で注入可能なクラス(コンストラクタ)を作成する
angular.module('module.factories', function() {
factory('FactoryObject', function() {
return {
someFunction: function(someParam) {};
someOtherFunction: function(someOtherParam) {});
};
});
});
は、私はこのオブジェクトを使用することができるようにしたいが、それを再することができますので、私は、コントローラにそれをインスタンス化/初期化したいですコントローラー内のイベント/アクションに応じて初期化されます。したがって、私は代わりに工場でコンストラクタ関数を返すことができるかどうか疑問に思っていましたか?
angular.module('module.factories', function() {
factory('FactoryObject', function() {
function FactoryObject(initParam) {
}
FactoryObject.prototype.someFunction = function() {};
return FactoryObject;
});
});
これは、角張った工場に適したパターンですか?それとも、このようなカスタムオブジェクトのためにファクトリを使用するのはちょうど "過度な"ことでしょうか?私はそれをライブラリのjsファイルに含めるだけで、そこから参照する必要がありますか?工場に置くことの1つの利点は、使用されている場所に注入されるので、テストで模擬するのは簡単だということです。 Angularには、代わりに使用できる他のメカニズムがありますか?
私はカスタムファクトリオブジェクトを提供関数内で宣言するのは、アプリケーションの残りの部分から抽象化されているということです。 – Bart
実際にコンストラクタ関数が必要な場合は、何をやっているのですか? – ganaraj
@ganaraj私が必要とする理由は、コントローラの寿命中にコントローラ内で複数回再初期化される可能性があるからです。私は普通のオブジェクトを返すだけで、その上に 'init'メソッドを持たせることができますが、それがどうなるかは分かりません。フィードバックをお寄せいただきありがとうございます。 – NilsH