2017-04-25 6 views
0

私はいくつかの自己登録コンポーネントを持つAngularJSアプリケーションに取り組んでいます。具体的には、パブリックインターフェイスを直接提供しないサービスです。別のサービスによって提供されるいくつかのディレクトリにいくつかの内部オブジェクトを登録するだけです。次のように自己登録サービスを挿入/ロードする正しい場所は何ですか?

あなたは、このようなサービスの工場の体を想像することができます:

var internalThing = { 
    // members ... 
}; 
thingRegistryService.registerThing(internalThing); 

return {}; 

したがって、私は唯一のサービスはいくつかの時点でロードされることを確認する必要があります。

サービスやコントローラの中には、私が知っているものがロードされる場所がありますが、コードに未使用の引数が残っています(リストの最後の引数の場合は、プロジェクトのJSHint設定に基づいてエラーとしてアウトライン化されます)。


少し背景:これは、大規模なチームで開発された大きなプロジェクトの一部です。ビルドやデプロイのマジックは、開発者が私たちのVCSにコミットしたJavaScriptコードファイルをAngularJSの依存関係注入に利用できるように処理します。したがって、AngularJSサービス、コントローラのいくつかの種類として提供する必要があります追加する必要がある任意のJavaScriptを、など


ような自己登録サービスをロードする適切な方法は何ですか?

答えて

0

モジュールを初期化する正しい場所は、angular.module('yourModule').runブロックです。 「自己登録」の場合

私は、このためのいくつかの暗黙的な方法を持っている方がよいと思う:

angular.module('yourModule').run(['service'], function (service) { 
    service.init(); 
}) 
+0

これは良い答えのように聞こえます。私はちょうど1つの質問を持っています:「私は、これに暗黙の方法を持たせる方が良いと思います」 - なぜですか?確かに、それはJSHintメッセージを抑制しますが、それ以外は冗長です(自己登録サービスは、単に注入されるという事実だけではすでに "必要"です)。明示的な 'init()'呼び出しで私がカスタムロジックを追加して初期化を確実に行うことが必要なモジュールであれば、最初にロードするときに登録する必要があります。 –

+0

.. 。注入された遅延インスタンス化シングルトンサービス)。 –

関連する問題