Heim  >  Artikel  >  Web-Frontend  >  Warum erhalte ich während meiner AngularJS-Migration auf Version 1.3 den Fehler „$injector:modulerr“?

Warum erhalte ich während meiner AngularJS-Migration auf Version 1.3 den Fehler „$injector:modulerr“?

DDD
DDDOriginal
2024-11-01 00:10:02718Durchsuche

Why Am I Getting the

Angularjs-Fehler: [$injector:modulerr] während der Migration auf V1.3

In Angularjs tritt der Fehler [$injector:modulerr] auf weist auf ein Modulabhängigkeitsproblem hin, insbesondere bei der Migration von früheren Versionen auf V1.3.

Angularjs-Code vor V1.3:

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

Beitrag -V1.3 AngularJS-Code:

<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>

Änderungen mit V1.3:

  • Globale Controller-Deklaration deaktiviert: Ab Angularjs V1.3 können globale Controller-Funktionen nicht mehr außerhalb eines Moduls deklariert werden. Stattdessen müssen Controller innerhalb eines Moduls registriert werden.
  • ng-app-Direktive erforderlich: Die ng-app-Direktive muss im Stammelement vorhanden sein, um die Angularjs-Anwendung zu booten.

Lösung:

  1. Erstellen Sie ein Angularjs-Modul: Verwenden Sie angle.module(), um ein Modul mit dem Namen „app“ zu definieren.
  2. Registrieren Sie den Controller im Modul: Rufen Sie .controller() im Modul auf, um einen Controller mit dem Namen „Strg“ mit den entsprechenden Abhängigkeiten und der Controller-Funktion zu definieren.
  3. Fügen Sie ng-app zum Root-Element hinzu: Stellen Sie sicher, dass das Root-HTML-Element das ng-app-Attribut hat.

Zusätzliche Hinweise:

  • Aus Stabilitäts- und Sicherheitsgründen wird empfohlen, die neueste Version von Angularjs (1.6 oder höher) zu verwenden.
  • Wenn Sie globale Controller-Deklarationen unterstützen müssen, können Sie angle.config().allowGlobalScoping() verwenden. Dies ist jedoch nicht die beste Vorgehensweise.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich während meiner AngularJS-Migration auf Version 1.3 den Fehler „$injector:modulerr“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn