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

AngularJS バージョン 1.3 に移行すると `[$injector:modulerr]` エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-02 05:18:30737ブラウズ

Why am I getting the `[$injector:modulerr]` error when migrating to AngularJS version 1.3?

Angularjs: キャッチされないエラー: [$injector:modulerr] バージョン 1.3 への移行

AngularJS バージョン 1.3 では、互換性を壊す変更が導入されました以前のバージョン用に書かれたコードの一部。あなたの場合、グローバル コントローラー関数 (Ctrl) を AngularJS モジュールに登録するのではなく宣言しているため、[$injector:modulerr] エラーが発生しています。

AngularJS モジュールの定義

AngularJS 1.3 以降では、コントローラーを宣言する推奨される方法は、コントローラーを AngularJS モジュールに登録することです。モジュールは、コントローラー、ディレクティブ、サービス、フィルターなどの AngularJS コンポーネントを整理および構成するためのコンテナーとして機能します。

エラーの解決

エラーを解決するには、次のことを行う必要があります。 AngularJS モジュールを作成し、それに Ctrl コントローラーを登録します。コードの更新バージョンは次のとおりです。

<code class="javascript">function Ctrl($scope) {
  $scope.age = 24;
}

var myApp = angular.module('app', []);
myApp.controller('Ctrl', ['$scope', Ctrl]);</code>

AngularJS 1.6 へのアップグレード

AngularJS 1.3 は非推奨になりました。 API がより安定し、パフォーマンスが向上した AngularJS バージョン 1.6 にアップグレードすることをお勧めします。 AngularJS 1.6 では、コントローラーを宣言するための推奨される方法は、クラスを使用することです:

<code class="typescript">export class Ctrl {
  constructor(public $scope: ng.IScope) {
    this.$scope.age = 24;
  }
}</code>

そしてそれを AngularJS モジュールに登録します:

<code class="javascript">myApp.controller('Ctrl', Ctrl);</code>

これらのガイドラインに従うことで、正常に実行できます。 AngularJS アプリケーションをバージョン 1.3 に移行するか、最新バージョン 1.6 にアップグレードして [$injector:modulerr] エラーを解決してください。

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

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