Heim >Web-Frontend >js-Tutorial >Warum ist mein AngularJS-Controller keine Funktion und wie kann ich das Problem beheben?

Warum ist mein AngularJS-Controller keine Funktion und wie kann ich das Problem beheben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-02 17:55:11953Durchsuche

Why is my AngularJS Controller Not a Function, and How Can I Fix It?

Controller ist kein Funktionsfehler in AngularJS: Umfassende Anleitung zur Lösung des Problems

Bei der Arbeit mit AngularJS kann ein Fehler auftreten, der darauf hinweist Ein Controller ist keine Funktion. Dieser Fehler tritt typischerweise auf, wenn versucht wird, Controller global zu definieren, was in AngularJS 1.3 nicht mehr zulässig ist. Um dieses Problem zu beheben, müssen Sie Controller explizit mit der module.controller-Syntax registrieren.

Lösung 1: Controller mit der module.controller-Syntax registrieren

Um einen Controller zu definieren Führen Sie unter Verwendung der module.controller-Syntax die folgenden Schritte aus:

angular.module('app', [])
    .controller('ContactController', ['$scope', function ContactController($scope) {
        // Controller logic here
    }]);

Lösung 2: Verwenden von $inject Annotation und AngularJS 1.3.5

Für AngularJS-Versionen 1.3.5 und höher können Sie die Annotation $inject verwenden, um die Abhängigkeiten für Ihren Controller zu definieren. Diese Anmerkung sollte oben in Ihrer Controller-Funktion platziert werden.

function ContactController($scope) {
    $scope.contacts = ["[email protected]", "[email protected]"];

    $scope.add = function() {
        $scope.contacts.push($scope.newcontact);
        $scope.newcontact = "";
    };
}
ContactController.$inject = ['$scope'];
angular.module('app', []).controller('ContactController', ContactController);

Globale Controller erneut aktivieren (optional)

AngularJS 1.3 erzwingt eine strikte Festlegung des Gültigkeitsbereichs, was dies verbietet globale Controller-Deklaration. Sie können globale Controller jedoch wieder aktivieren, indem Sie die Option „allowGlobals“ in Ihrer Modulkonfiguration verwenden:

angular.module('app')
    .config(['$controllerProvider', function($controllerProvider) {
        $controllerProvider.allowGlobals();
    }]);

Zusätzliche Überlegungen:

  • Stellen Sie sicher, dass ng- app ist im Stammelement Ihrer HTML-Datei festgelegt.
  • Stellen Sie sicher, dass die richtigen Skripte in Ihrer Datei enthalten sind HTML.
  • Vermeiden Sie es, dasselbe Modul mehrmals zu definieren, da dadurch zuvor registrierte Entitäten gelöscht werden können.

Durch Befolgen dieser Lösungen können Sie den Fehler „Controller ist keine Funktion“ erfolgreich beheben in AngularJS und definieren Sie Controller effektiv.

Das obige ist der detaillierte Inhalt vonWarum ist mein AngularJS-Controller keine Funktion und wie kann ich das Problem beheben?. 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