Добавляйте файлы AngularJS во время загрузки

0

Поэтому я пытаюсь загрузить все скрипты AngularJS которые мне нужны в моем приложении, когда загружается файл index.html.

Для этого я сделал этот кусок кода

 <head>
        ...
           AngularJS libaries loads
        ...

        <script>
            var main = {
                    root: [
                        'core.js'
                    ]
                };

            var iterateScripts = function(folder, path){
                for(var key in folder){
                    if(key.toLowerCase() === 'root'){
                        for(var i = 0; i < folder[key].length; i++){
                            var script = document.createElement('script');
                            script.type = 'text/javascript';
                            script.src = path + '/' + folder[key][i];
                            // console.info('script : '+ script.src)
                            document.getElementsByTagName('head')[0].appendChild(script);
                        }
                    } else {
                        var newPath = path + '/' + key;
                        // console.info('path : ', newPath, folder[key])
                        iterateScripts(folder[key], newPath);
                    }
                }
            };

            iterateScripts(main, 'app/main');
            console.info(document.getElementsByTagName('head')[0])
        </script>
   </head>

Это загружает файлы в порядке, но я получаю эту ошибку

Объяснение ошибки AngularJS

После тестирования взад и вперед я пришел к выводу, что проблема заключается в том, что страница загружается, когда AngularJS компилируется, что создает ошибку.

Если это так, как я могу загружать свое угловое приложение аналогичным образом до того, как тег body загрузится?

  • 1
    Это не ответ, но есть лучшие варианты. Попробуйте использовать что-то вроде require.js или JSPM, если хотите использовать импорт ES6.
Теги:
dom

1 ответ

1
Лучший ответ

Вам придется загрузиться самостоятельно, вместо использования ng-app. Вот документация по нему: https://docs.angularjs.org/guide/bootstrap.

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

angular.element(document).ready(function() {
    angular.bootstrap(document, ['myApp']);
});

Который говорит, что он готов к запуску.

  • 0
    Это сработало, пришлось установить таймер, чтобы убедиться, что файлы загружены ^^
  • 1
    Не устанавливайте таймер, используйте свойство onload.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню