Angularにより、サービスは、インスタンス化するときに使用されるコンストラクターを使用して、他のサービスを依存関係として宣言できます。
依存関係を宣言するには、工場メソッド宣言でそれらを指定し、$ inject属性(文字列識別配列)を使用するか、工場メソッドで配列表記を使用する必要があります。
通常、$ Injectプロパティ宣言を破棄することができます(つまり、//www.vevb.com/article/91815.htmで言及されている暗黙の依存関係注入ですが、これは実験特性であり、圧縮と難読化の後に失敗します!)。
配列表記を使用します
関数mymodulecfgfn($ detwer){$ sultion.factory( 'myservice'、['dep1'、 'dep2'、function(dep1、dep2){}];}$ injectプロパティを使用します
関数mymodulecfgfn($ detwer){var myservicefactory = function(dep1、dep2){}; myServiceFactory。$ inject = ['dep1'、 'dep2']; $ sultion.factory( 'myService'、myServiceFactory); }暗黙的なDIを使用する(圧縮された難読化コードと互換性がない)
関数mymodulecfgfn($ detwer){$ sultion.Factory( 'myService'、function(dep1、dep2){});}ここに2つのサービスがある例があり、それらの間に依存関係があり、Angularが提供する他のサービスがあります。
/*** batchlogサービスにより、メッセージはメモリ内にキューを形成し、50秒に1回フラッシングできます。 * * @param { *}メッセージメッセージを記録するメッセージ。 */ function batchlogmodule($ detween){$ sultion.factory( 'batchlog'、['$ timeout'、 '$ log'、function($ timeout、$ log){var messagequeue = []; function log(){if(messagequeue.length){$ log( 'batchlog pessage:'、messagequeue = []; mesagequeue = [];}};} log() / *** routeTemplatemonitorは各ルートの変更を監視し、各bi'anuはbatchlogサービスを介して記録します*/ $ sultion.factory( 'routeTemplatemonitor'、['$ route'、 'batchlog'、 '$ rotscope'、function($ route、batchlog、$ rotscope){$ rotecheccccccccce。 batchlog($ route.current?current.template:null); } //メインサービスを取得し、アプリケーションを実行します(イベントを聞く)angular.injector([batchlogmodule]))。例で注意すべきこと:
上記は、サービス依存関係情報を管理するAngularJSの編集です。今後も関連情報を追加し続けます。このウェブサイトへのご支援ありがとうございます!