AngularJS Dynamiczne ładowanie kontrolera

Czytałem dużo o ładowaniu lazzy, ale napotykam problem podczas używania $ routeProvider.

Moim celem jest załadowanie pliku javascript zawierającego kontroler i dodanie trasy do tego kontrolera, który został wcześniej załadowany.

Zawartość mojego pliku javascript do załadowania

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

Ten plik nie jest uwzględniany, gdy wywoływany jest kątowy startowy. Oznacza to, że muszę załadować plik i utworzyć trasę do tego kontrolera.

Najpierw zacząłem pisać funkcję rozwiązywania, która musi załadować plik Javascript. Ale zadeklarowanie mojego parametru kontrolera w deklaracji trasy dało mi błąd:

„MouseTestCtrlA” nie jest funkcją, została niezdefiniowana

Oto połączenie, które próbuję ustawić:

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

Z tego, co przeczytałem, parametr kontrolera powinien być zarejestrowanym kontrolerem

controller - {(string | function () =} - Kontroler fn, który powinien być powiązany z nowo utworzonym zakresem lub nazwą zarejestrowanego kontrolera, jeśli przekazany jako ciąg.

Piszę więc fabrykę, która powinna mieć możliwość załadowania mojego pliku, a następnie (styl obietnicy!) Powinienem próbować zadeklarować nową trasę.

Podał mi coś poniżej, gdzie zależności są tablicą ścieżek plików javascript do załadowania:

Stosowanie

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

Ładowarka skryptów

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

Problem

Nadal mam ten błąd javascript „'MouseTestCtrlA' nie jest funkcją, jest niezdefiniowany”, co oznacza, że ​​Angular nie mógł rozwiązać „MouseTestCtrlA” jako zarejestrowanego kontrolera.

Czy ktoś może mi w tym pomóc?

questionAnswers(1)

yourAnswerToTheQuestion