2

angularの観点からは、サービスプロバイダーとモジュール構成コードを登録する順序が重要であるようです.構成コードがプロバイダーを見つけるためには、プロバイダーを前に登録する必要があります.

angular は最初にすべてのプロバイダー登録を処理し、それらを DI で使用できるようにしてから、次のように構成コールバックを呼び出すと思っていたので、これは私にとってまったく驚きでした。

module.config(function(myServiceProvider) {...});

問題を示す非常に短いテストをここで見てください。「不明なプロバイダー」で失敗します。JS コンソールで確認できます: http://plnkr.co/edit/jGJmE2Fq7wOrwubdlTTX

ここで何か不足していますか?それは予想される角度動作ですか?

ありがとう。

4

2 に答える 2

0

モジュールのAngularドキュメントには、次のように記載されています。

推奨されるセットアップ
上記の例は単純ですが、大規模なアプリケーションには拡張できません。代わりに、次のようにアプリケーションを複数のモジュールに分割することをお勧めします。

  • サービス宣言用のサービスモジュール
  • ディレクティブ宣言用のディレクティブ モジュール
  • フィルター宣言用のフィルター モジュール
  • そして、上記のモジュールに依存し、初期化コードを持つアプリケーションレベルのモジュール。

を呼び出す単一のモジュールを使用しているため、そのモジュールと の宣言appの間に依存関係を作成しています。次のように、すべてのプロバイダーを別のモジュールに配置する必要があります。configprovider

var appr = angular.module('appr', [])
  .provider('myService', function() {
    this.$get = function() {};
  })

app次に、使用する依存関係を宣言します。

var app = angular.module('plunker', ['appr']);

更新されたプランカーをチェックしてください: http://plnkr.co/edit/Ym3Nlsm1nX4wPaiuVQ3Y?p=preview

また、一般的な を使用する代わりに、やなどproviderのより具体的な実装を使用することを検討してください。詳細については、 Module APIのドキュメントを参照してください。providercontrollerfactoryservice

于 2013-06-04T18:15:20.383 に答える