AgularJS: динамически создавать основной модуль после асинхронной операции - PullRequest
0 голосов
/ 08 ноября 2018

Я хочу обусловить (с помощью асинхронного http-запроса) создание модуля AngularJS.

Вот HTML:

<html>
    <head>
        <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.16/angular.min.js"></script>
        <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.10/angular-ui-router.min.js"></script>
        <script type="text/javascript" src="./app.js"></script>
    </head>
    <body ng-app="myApp">
        <nav> 
            <a ui-sref="state1">State 1</a>
            <a ui-sref="state2">State 2</a>
        </nav>
        <div ui-view></div>
    </body>
</html>

Содержимое "app.js":

$http = angular.injector(["ng"]).get("$http");

$http.get('http://demo0719583.mockable.io/weather')
    .then(function(response){
        var myApp = angular.module("myApp",[ "ui.router", "AppCtrls"]);

        myApp.config(function ($stateProvider, $urlRouterProvider){
            $stateProvider.state("state1", {
                url: "/qsd",
                template: "<p>State 1</p>",
                controller: "Ctrl1"
            }).state("state2", {
                url: "/aze",
                template: "<p>State 2</p>",
                controller: "Ctrl2"
            });
        });

        var ctrls = angular.module("AppCtrls", []);

        ctrls.controller( "Ctrl1", function($scope) {
            console.log("Ctrl1 loaded.");
        });

        ctrls.controller( "Ctrl2", function($scope) {
            console.log("Ctrl2 loaded.");
        });
    }, function(errorResponse){
        alert('duh !');
    });

Я использую $http за пределами angular, чтобы я мог запускать асинхронные HTTP-запросы. Запрос работает, но я получаю следующую ошибку:

angular.js:36 Uncaught Error: [$injector:modulerr]

Я предполагаю, что объявленный ng-app ожидает модуля, но из-за асинхронизма создание модуля задерживается.

Вопрос: как я могу создать свой модуль программно и избежать этой ошибки?

Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...