Angularは多くの有用なサービスを提供していますが、一部の特別なアプリケーションでは、カスタムサービスを作成するのに役立ちます。これを行いたい場合は、最初にモジュールにサービスファクトリメソッドを登録する必要があります。モジュールはモジュールを直接渡すことができます。
すべてのAngularサービスはDI(//www.vevb.com/article/91775.htm)に関与しており、Angular DIシステム(インジェクター)の名前(ID)に登録するか、他の工場メソッドの既存のサービスへの依存関係を宣言できます。
1.サービスの登録
サービスを登録するには、モジュールを持ち、このサーバーをこのモジュールの一部にする必要があります。次に、モジュールAPIまたはモジュール構成関数を介してサービスを登録できます。次の擬似コードには、これら2つの登録方法が表示されます。
Angular.module APIを使用します:
var mymodule = angular.module( 'mymodule'、[]); mymodule.factory( 'serviceid'、function(){var someservice; //工場メソッドボディ、サモササービスリターンサムサービス;});$供給サービスを使用してください:
angular.module( 'mymodule'、[]、function($ rofit){$ sultion.factory( 'serviceid'、function(){var someservice; //工場メソッドボディ、サムサービスリターンサムサービス;});});サービスインスタンスを登録する必要はなく、代わりに、工場メソッドが呼び出されたときにインスタンス化されることに注意してください。
2。依存関係
サービスは依存するだけでなく、独自の依存関係もあります。依存関係は、工場メソッドのパラメーターで指定できます。読み取り(//www.vevb.com/article/91775.htm)角度のDi、Arrayタグの使用、$ inject属性の詳細については、DI宣言をより簡潔にします。 (AngularのDIの詳細と、Array Notationの使用と$ Injectプロパティを使用して、DI Annotation Minification-Proofを作成します…)
これが非常に簡単なサービスの例です。このサービスは、$ウィンドウサービス(ファクトリーメソッドパラメーターを通過する)に依存しており、1つの方法しかありません。このサービスは、すべての通知を保存するだけで、3番目の通知の後、このサービスはWindow.Alertを介してすべての通知を表示します。
<!doctype html> <html lang = "zh-cn" ng-app = "mainapp"> <head> <head> <head> <title> services </head> </head> <body> <div ng-controller = "mycontroller"> <入力タイプ= "ng-model =" msg "/> <botun msg </button> <ul> <li ng-repeat = "msgs"> {{msg}} </li> </ul> </div> <script src = "../ angular-1.0.1.js" type = "text/javascript"> </script = "text/javascript"> var app = " Angular.module( "mainapp"、[]、function($ rofit){$ sultion.factory( "notify"、["$ window"、 "$ timeout"、function(win、timeout){var msgs = []; return function(msg){msgs.push(msg); if(msgs.length == 3){fentut(){fentime(){untime(){ win.alert( "/n"); App.Controller( "myController"、function($ scope、notify){$ scope.msgs = []; $ scope.savemsg = function(){this.msgs.push(this.msg); notify(this.msg); this.msg = "";};}3。インスタンス化角度サービス
Angularのすべてのサービスは、怠lazにインスタンス化されています。これは、サービスが他のインスタンス化されたサービスまたはそれに依存するアプリケーションコンポーネントが依存している場合にのみ作成されることを意味します。言い換えれば、Angularは、サービスが直接または間接的に要求されるまでサービスをインスタンス化しません。
4。シングルトンとしてのサービス
最後に、すべてのAngularサービスがSingletonアプリケーションであることを認識しなければなりません。これは、各インジェクターが特定のサービスのインスタンスと1つのインスタンスのみを持っていることを意味します。 Angularはグローバルな状態を破壊するのが非常に迷惑であるため、それぞれが指定されたサービスのインスタンスを持つように複数のインジェクターを作成することが可能です。テストにおける強い需要を除いて、一般的にそのようなニーズはほとんどありません。
上記は、Angularサービスに関する情報です。今後も関連情報を追加し続けます。このサイトへのご支援ありがとうございます!