angular js docsに従って
サービス (名前、コンストラクター); name : name constructor : インスタンス化される注入可能なクラス (コンストラクター関数)。
Internally :
{
$get: function() {
return $injector.instantiate(constructor);
}
}
angular ドキュメントから、サービスは渡された 2 番目の引数をコンストラクターとして扱い、プロバイダーは $injector を介してインスタンスを作成し、$get を介して返すと結論付けることができます。したがって、モジュール関数 (コントローラー、ディレクティブなど) のいずれかにサービスを挿入するときはいつでも、シングルトンのオフコースである新しく作成されたオブジェクトを返す必要があります。
これらの方法でサービスを定義すると、問題が発生します。
1. _app_user_content.service("MyService" , function(){
this.Message = "Greetings!";
}); //returns object when injected.
2. _app_user_content.service("MyService" , function(){
this.Message = "Greetings!";
return "123"
}); // returns object when injected.
3. _app_user_content.service("MyService" , function(){
this.Message = "Greetings!";
return function(){}
}); //returns function(){} when injected. Doesnot return object
3 番目のケースが関数を返すのはなぜですか?