1

それを使用する関数のprovider前に宣言する必要があるのはなぜですか?config

つまり、このコードは次のように機能します。

angular.module('app')
  .provider('testService', function() {
    // ...
  })
  .config(function(testServiceProvider) {
    // ...
  });

しかし、これではありません( を取得しました[$injector:unpr] Unknown provider: testServiceProvider):

angular.module('app')
  .config(function(testServiceProvider) {
    // ...
  })
  .provider('testService', function() {
    // ...
  });

(私の実際のコードでは、これら 2 つのブロックは別々のファイルで定義されているため、これらのファイルをロードする順序が非常に重要です)

私の理解では、 and を呼び出すmodule('app').config(...)と、コードはすぐには実行されませんが、Angular アプリケーションがブートストラップされると、それmodule('app').provider(...)が Angular の役割であり、さまざまなコードを正しい順序 (つまり、providerコードとコード) で実行します。config

ありがとう

ps1:私はすでにこの質問を見ました。これはまったく同じですが、答えは提案または推測に関するものでした...

ps2: 私はまだ Angular 1.2 を使用していますが、Angular 1.3 - 1.4 で何かが変わったのでしょうか?

4

1 に答える 1

0

いくつかの Angular バージョンでテストしましたが、1.2.x バージョンの「バグ」のようです。バージョン 1.3.0 から、 and の定義の順序はprovider重要でconfigはなくなりました。

テストコード:

angular.module('myApp',[])
  .provider('testService', function() {
    console.log('.. service');
    this.$get = function () {
      return {};
    };
  })
  .config(function(testServiceProvider) {
    console.log('.. config');
  });
于 2015-12-08T13:23:02.890 に答える