ホームページ  >  記事  >  ウェブフロントエンド  >  AngularJS バージョン 1.3 への移行中に「$injector:modulerr」エラーが発生するのはなぜですか?

AngularJS バージョン 1.3 への移行中に「$injector:modulerr」エラーが発生するのはなぜですか?

DDD
DDDオリジナル
2024-11-01 00:10:02717ブラウズ

Why Am I Getting the

Angularjs エラー: [$injector:modulerr] V1.3 への移行中

Angularjs では、エラー [$injector:modulerr]モジュールの依存関係の問題、特に以前のバージョンから移行する場合に発生する問題を示します。 V1.3.

V1.3 より前の Angularjs コード:

<code class="html"><body>
  <div ng-controller="Ctrl">
    ...
    <script>
      var Ctrl = function($scope) {
        ...
      };
    </script>
  </div>
</body></code>

V1.3 以降の Angularjs コード:

<code class="html"><body ng-app="app">
  <div ng-controller="Ctrl">
    ...
  </div>
  <script>
    function Ctrl($scope) {
      ...
    }

    angular.module('app', [])
      .controller('Ctrl', ['$scope', Ctrl]);
  </script>
</body></code>

の変化V1.3:

  • グローバル コントローラー宣言が無効: Angularjs V1.3 以降、グローバル コントローラー関数はモジュールの外部で宣言できません。代わりに、コントローラーはモジュール内に登録する必要があります。
  • ng-app ディレクティブ必須: Angularjs をブートストラップするには、ng-app ディレクティブがルート要素に存在する必要があります。 application.

解決策:

  1. Angularjs モジュールの作成: angular.module() を使用して、という名前のモジュールを定義します。 'app'.
  2. 内にコントローラーを登録しますモジュール: モジュールで .controller() を呼び出し、適切な依存関係とコントローラー関数を使用して 'Ctrl' という名前のコントローラーを定義します。
  3. ルート要素に ng-app を追加します: ルート HTML 要素に ng-app 属性があることを確認します。

追加注:

  • 安定性とセキュリティ上の理由から、Angularjs の最新バージョン (1.6 以降) を使用することをお勧めします。
  • グローバル コントローラー宣言をサポートする必要がある場合は、 angular.config().allowGlobalScoping() を使用できます。ただし、これはベストプラクティスではありません。

以上がAngularJS バージョン 1.3 への移行中に「$injector:modulerr」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。