web-dev-qa-db-ja.com

.config、.run、AppCtrl-ルートを配置する場所は?

AngularJSの.config関数と.run関数の違いを見つけたいと思いました。ルートのセットアップに.configを使用していましたが、ルート変更の開始イベントと成功イベントを監視するために$onを使用していました。

.runで依存性注入の問題が発生したため、このコードの一部を.configに移動しました。

私はついに、このいくつかをCommonAppControllerに移動し、<body>に設定しました。

また、2つの.configがあり、正常に実行されているように見えましたが、これは間違いです。

誰がどの方法を使用するかについて少し洞察を与えることができますか?

26
Martin

構成ブロックと実行ブロックは、アプリケーションブートストラップのさまざまなポイントで実行され、さまざまなインジェクションローカルを自由に使用できます。 AngularJSドキュメンテーション で見つけることができるものの概要を以下に示します。

構成ブロック(module.config()で登録)はプロバイダーの登録中に実行され、プロバイダーと定数にのみ挿入できます(module.provider()およびmodule.constant()を参照)。通常、これは_$routeProvider_などのアプリケーション全体のものを構成する場所です。サービスを作成する前に構成する必要があるもの。

実行ブロック(module.run()で登録)は、インジェクターがすべてのプロバイダーを取得した後に実行されます。これで、すべてのインスタンスと定数を注入できます。これは通常、サービス、_$rootScope_、イベントなどを構成する場所です。

いずれかを複数持つことができ、それらはモジュールに登録された順序で実行されます。たとえば、コントローラーのすべてのグループの前に構成ブロックを登録して、これらのコントローラーへのルートを登録することを好む人もいます。

76
Steve Klösters