AngularJSのサービスについて
Angularサービスとは何ですか?
Angularサービスはシングルトンオブジェクト、またはWebアプリケーション共通の特定のタスクを実行する関数です。
Angularは、サーバにリクエストを送るブラウザのXMLHttpRequestオブジェクトにアクセスする$httpサービスのような、
いくつかの組み込みサービスを持ちます。
他のコアなAngular変数と識別子と同様に、組み込みのサービスは常に$
から始まります。(前述した$httpのように)
また、独自のカスタムサービスを作ることも可能です。
サービスの使用について
Anglarのサービスを使用するには、開発者がサービスに依存するコンポーネント(コントローラー、サービス、フィルター、ディレクティブ)との依存関係を、 識別(決定)し、 その他の部分については、Angularの依存性注入(DI)のサブシステムに任せます。 Angularの注入のサブシステムは、サービスのインスタンス化、依存性の解決、 要求されたものとしてのコンポーネントへの依存性の供給を担当します。
Angularは、"コンストラクタ(constructor)"注入を使用して、依存性を注入します。 依存性は、コンポーネントのファクトリー/コンストラクタ関数へ渡されます。 これは、JavaScriptが動的な型付け言語であるためで、 Angularの依存性注入のサブシステムは、サービス依存性を識別するための静的な型付けを使用することが出来ないためです。 このため、コンポーネントは注入アノテーションメソッドの1つを使用して、 明確にその依存性を定義しなければいけません。 下記は、$injectプロパティによって供給された例です。
var MyController = function($location) { ... };
MyController.$inject = ['$location'];
myModule.controller('MyController', MyController);
また、下記は"インライン(inline)"注入アノテーションによって供給された例です。
var myService = function($http) { ... };
myModule.factory('myService', ['$http', myService]);
サービスの定義
アプリケーション開発者は、Angularモジュールの名称登録とサービスファクトリー関数によって、 自由に独自のサービスを定義することが出来ます。
サービスファクトリー関数の目的は、アプリケーションの一部となるサービスを表現する単一のオブジェクト、 または関数を作成することにあります。 このオブジェクトまたは関数は、その後何らかのコンポーネント(コントローラー、サービス、フィルター、ディレクティブ)に、 サービスへの依存性を決定するために注入されます。
Angularのファクトリー関数は遅延して実行されます。 依存性を満たすのに必要になった場合のみ実行され、 これは各サービス毎に一度だけ実行されます。 サービスに依存している全てのものは、サービスファクトリーによって生成された単一インスタンスの参照を取得します。
関連トピック
関連API
- Angular Service API
- Injector API
© 2017 Google
Licensed under the Creative Commons Attribution License 3.0.
このページは、ページトップのリンク先のAngularJS公式ドキュメント内のページを翻訳した内容を基に構成されています。 下記の項目を確認し、必要に応じて公式のドキュメントをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- AngularJSの更新頻度が高いため、元のコンテンツと比べてドキュメントの情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報やより分かり易くするための追記を行っている事があります。