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.controllersyntaxe.
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' windowobjet 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-appdirective 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.