AngularJS Dynamic chargeant un contrôleur

J'ai lu beaucoup de choses sur lazzy de chargement, mais je suis confronté à un problème lors de l'utilisation de $routeProvider.

Mon but est de charger un fichier javascript qui contient un contrôleur et d'ajouter un itinéraire à ce contrôleur, qui a été chargé précédemment.

Le contenu de mon fichier javascript à charger

angular.module('demoApp.modules').controller('MouseTestCtrlA', ['$scope', function ($scope) {
    console.log("MouseTestCtrlA");
    $scope.name = "MouseTestCtrlA";
}]);

Ce fichier n'est pas inclus lorsque angulaire bootstap est appelé. Cela signifie, que j'ai pour charger le fichier et de créer un itinéraire vers ce contrôleur.

Tout d'abord, j'ai commencé à écrire une détermination de la fonction qui a pour charger le fichier Javascript. Mais déclarer mes paramètre du contrôleur en route déclaration m'a donné une erreur :

'MouseTestCtrlA" n'est pas une fonction, suis pas défini

Voici l'appel, je suis en train de mettre :

demoApp.routeProvider.when(module.action, {templateUrl: module.template, controller: module.controller, resolve : {deps: function() /*load JS file*/} });

De ce que j'ai lu, le contrôleur de paramètre doit être un contrôleur enregistré

contrôleur – {(chaîne|function()=} – Contrôleur fn qui doit être associée étendue nouvellement créé ou le nom d'un contrôleur enregistré si elle est adoptée comme une chaîne de caractères.

Donc j'écris une usine qui devrait être en mesure de charger mon fichier, puis (promesse de style!) Je devrait essayer de déclarer un nouvel itinéraire.

Il m'a donné quelque chose comme ci-dessous où les dépendances est un tableau de fichiers javascript' chemins de charge :

Utilisation

ScriptLoader.load(module.dependencies).then(function () {
    demoApp.routeProvider.when(module.action, {templateUrl: 'my-template', controller: module.controller});
});

Chargeur de Script

angular.module('demoApp.services').factory('ScriptLoader', ['$q', '$rootScope', function ($q, $rootScope) {
        return {
            load: function (dependencies)
            {
                var deferred = $q.defer();
                require(dependencies, function () {
                    $rootScope.$apply(function () {
                        deferred.resolve();
                    });
                });
                return deferred.promise;
            }
        }
    }]);

Problème

J'ai encore cette erreur javascript "'MouseTestCtrlA" n'est pas une fonction, obtenu non définie", ce qui signifie Angulaire ne pouvait pas résolue "MouseTestCtrlA" comme un contrôleur enregistré.

Quelqu'un peut m'aider sur ce point, s'il vous plaît ?

source d'informationauteur t00f