Avec Angular 1.3+, vous ne pouvez plus utiliser la déclaration de contrôleur globale sur la portée globale (sans enregistrement explicite). Vous devrez enregistrer le contrôleur en utilisant la module.controller
syntaxe.
Exemple:-
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 = "";
};
}]);
ou
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);
C'est un changement radical, mais il peut être désactivé pour utiliser des globaux en utilisantallowGlobals
.
Exemple:-
angular.module('app')
.config(['$controllerProvider', function($controllerProvider) {
$controllerProvider.allowGlobals();
}]);
Voici le commentaire de la source angulaire: -
- vérifier si un contrôleur avec un nom donné est enregistré via
$controllerProvider
- vérifier si l'évaluation de la chaîne sur la portée actuelle renvoie un constructeur
- if $ controllerProvider # allowGlobals, vérifiez
window[constructor]
l' window
objet global (non recommandé)
.....
expression = controllers.hasOwnProperty(constructor)
? controllers[constructor]
: getter(locals.$scope, constructor, true) ||
(globals ? getter($window, constructor, true) : undefined);
Quelques vérifications supplémentaires: -
Assurez-vous de mettre également le nom de l'application dans la ng-app
directive sur votre élément racine angulaire (par exemple: - html
). Exemple: - ng-app = "myApp"
Si tout va bien et que vous rencontrez toujours le problème, n'oubliez pas de vous assurer que le bon fichier est inclus dans les scripts.
Vous n'avez pas défini le même module deux fois à des endroits différents, ce qui entraîne l'effacement des entités définies précédemment sur le même module.Exemple angular.module('app',[]).controller(..
et à nouveau dans un autre endroit angular.module('app',[]).service(..
(avec les deux scripts inclus bien sûr) peuvent entraîner le contrôleur précédemment enregistré sur le module app
à effacer avec la deuxième recréation du module.