2014-09-12 75 views
0

有人能解釋爲什麼這是工作:AngularJS包括在HTML的JavaScript

<!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 – 2014-09-12 11:26:38

+0

這就是我想的。但是有沒有什麼方法來加載它,就像我在第二個示例中嘗試的並使其工作? – 2014-09-12 11:29:52

+0

@Sinan我真的很好奇 - 一般來說,第二種方法的優點是什麼? – 2014-09-12 11:42:21

回答

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

你需要接受你的答案,因爲它顯示的解決方案.. – 2014-09-12 12:11:18

+0

@NoypiGilas必須等待2天,因爲這是我自己的答案。 – 2014-09-12 12:18:34

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

我會試試這個。 – 2014-09-12 11:51:01

1

第二個例子嘗試下載並異步創建模塊。

因此,當角嘗試引導時,'appLogin'還不存在。

與第一個示例不同,瀏覽器等待腳本標記完成。所以,文檔的準備好的事件還沒有被解僱。

我記得,自動引導程序在ready事件觸發時開始。