2014-09-12 2 views
0

Может кто-нибудь объяснить, почему это работает:AngularJS включая JavaScript в HTML

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="appLogin"> 
<head> 
    <script src="../Scripts/jquery-2.1.0.min.js"></script> 
    <script src="../Scripts/angular.min.js"></script> 

    <script src="../Global/config.js"></script> 
</head> 
<body> 

</body> 
</html> 

Но когда я пытаюсь добавить мой config.js скрипт так:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="appLogin"> 
<head> 
    <script src="../Scripts/jquery-2.1.0.min.js"></script> 
    <script src="../Scripts/angular.min.js"></script> 

    <script> 
     var element1 = document.createElement("script"); 
     element1.src = "../Global/config.js"; 
     document.head.appendChild(element1); 
    </script> 
</head> 
<body> 

</body> 
</html> 

я получаю:

Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.13/$injector/modulerr?p0=appLogin&p1=Error%….c%20(http%3A%2F%2Flocalhost%3A49723%2FScripts%2Fangular.min.js%3A17%3A431) 

appLogin - мой угловой модуль, определенный в config.js. В обоих случаях, когда я использую инструменты разработчика в своем браузере, я вижу, что сценарий загружен, но по какой-то причине второй подход не работает?

+0

проблема в заказе, я думаю, во втором случае, config.js загружен до angular.js –

+0

Вот что я думал. Но есть ли способ загрузить его, как я пытался в моем втором примере, и заставить его работать? –

+0

@Sinan Мне по-настоящему любопытно здесь - в чем преимущество второго метода, в общем? –

ответ

1

Я получил его сейчас. Как вы уже упоминали, проблема в том, что appLogin еще не существует. я решил свою проблему с помощью document.readyState():

<script type="text/javascript"> 
    function getConfig() { 
     var element1 = document.createElement("script"); 
     element1.src = "../config.js"; 
     document.body.appendChild(element1); 
    } 
    if (document.readyState === "complete") { getConfig(); } 

</script> 

Спасибо вам, ребята. :)

+0

вам нужно принять ваш ответ, потому что он показывает решение .. –

+0

@NoypiGilas должны ждать 2 дня, потому что это мой собственный ответ. –

0

вы можете попробовать что-то вроде этого

<script type="text/javascript"> 
    function getConfig() { 
    var element = document.createElement("script"); 
    element1.src = "../Global/config.js"; 
    document.body.appendChild(element); 
    } 
    if (window.addEventListener) 
    window.addEventListener("load", getConfig, false); 
    else if (window.attachEvent) 
    window.attachEvent("onload", getConfig); 
    else window.onload = getConfig; 
</script> 
+0

Я попробую это. –

1

второй пример пытается загрузить и создать модуль асинхронно.

так что есть шанс, что «appLogin» еще не существует, когда угловой пытается загрузиться.

В отличие от первого примера, браузеры ждут окончания тега сценария. поэтому готовое событие документа еще не запущено.

Я помню, что автозагрузка начинается, когда готово событие запущено.

Смежные вопросы