AngularJS Dynamic cargando un controlador

Leí mucho sobre la carga perezosa, pero tengo un problema al usar $ routeProvider.

Mi objetivo es cargar un archivo javascript que contenga un controlador y agregar una ruta a este controlador que se ha cargado anteriormente.

Contenido de mi archivo javascript para cargar

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

Este archivo no se incluye cuando se llama a bootstap angular. Significa que tengo que cargar el archivo y crear una ruta a este controlador.

Primero, comencé a escribir una función de resolución que tiene que cargar el archivo Javascript. Pero declarar mi parámetro de controlador en la declaración de ruta me dio un error:

'MouseTestCtrlA' no es una función, tiene undefined

Aquí está la llamada que estoy tratando de establecer:

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

Por lo que leí, el parámetro del controlador debería ser un controlador registrado.

controller - {(string | function () =} - fn del controlador que debe asociarse con el alcance creado recientemente o el nombre de un controlador registrado si se pasa como una cadena.

Así que escribo una fábrica que debería poder cargar mi archivo y luego (¡prometo estilo!) Debería intentar declarar una nueva ruta.

Me dio algo como a continuación, donde las dependencias es una matriz de rutas de archivos de javascript para cargar:

Uso

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

Cargador de scripts

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;
            }
        }
    }]);

Problema

Todavía tengo este error de javascript "'MouseTestCtrlA' no es una función, tengo undefined", lo que significa que Angular no se pudo resolver 'MouseTestCtrlA' como un controlador registrado.

¿Alguien puede ayudarme en este punto por favor?

Respuestas a la pregunta(1)

Su respuesta a la pregunta