Mit Angular 1.3+ können Sie die globale Controller-Deklaration nicht mehr für den globalen Bereich verwenden (ohne explizite Registrierung). Sie müssten den Controller mithilfe der module.controller
Syntax registrieren .
Beispiel:-
angular.module('app', [])
.controller('ContactController', ['$scope', function ContactController($scope) {
$scope.contacts = ["abcd@gmail.com", "abcd@yahoo.co.in"];
$scope.add = function() {
$scope.contacts.push($scope.newcontact);
$scope.newcontact = "";
};
}]);
oder
function ContactController($scope) {
$scope.contacts = ["abcd@gmail.com", "abcd@yahoo.co.in"];
$scope.add = function() {
$scope.contacts.push($scope.newcontact);
$scope.newcontact = "";
};
}
ContactController.$inject = ['$scope'];
angular.module('app', []).controller('ContactController', ContactController);
Es ist eine bahnbrechende Änderung, aber es kann deaktiviert werden, um Globals zu verwendenallowGlobals
.
Beispiel:-
angular.module('app')
.config(['$controllerProvider', function($controllerProvider) {
$controllerProvider.allowGlobals();
}]);
Hier ist der Kommentar von Angular Quelle: -
- Überprüfen Sie, ob ein Controller mit Vorname über registriert ist
$controllerProvider
- Überprüfen Sie, ob die Auswertung der Zeichenfolge im aktuellen Bereich einen Konstruktor zurückgibt
- Wenn $ controllerProvider # allowGlobals, überprüfen Sie
window[constructor]
das globale window
Objekt (nicht empfohlen).
.....
expression = controllers.hasOwnProperty(constructor)
? controllers[constructor]
: getter(locals.$scope, constructor, true) ||
(globals ? getter($window, constructor, true) : undefined);
Einige zusätzliche Überprüfungen: -
Stellen Sie sicher, dass Sie den App-Namen auch in die ng-app
Direktive Ihres eckigen Stammelements einfügen (z. B.: - html
). Beispiel: - ng-app = "myApp"
Wenn alles in Ordnung ist und das Problem weiterhin auftritt, stellen Sie sicher, dass die Skripte die richtige Datei enthalten.
Sie haben dasselbe Modul nicht zweimal an verschiedenen Stellen definiert, was dazu führt, dass zuvor auf demselben Modul definierte Entitäten gelöscht werden. Beispiel angular.module('app',[]).controller(..
und erneut an einer anderen Stelle angular.module('app',[]).service(..
(wobei natürlich beide Skripte enthalten sind) können dazu führen, dass der zuvor registrierte Controller auf dem Modul Modul app
, das mit der zweiten Neuerstellung des Moduls gelöscht werden soll.