Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试动态加载我的Angular脚本会产生一个;“找不到角度”;错误_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 尝试动态加载我的Angular脚本会产生一个;“找不到角度”;错误

Javascript 尝试动态加载我的Angular脚本会产生一个;“找不到角度”;错误,javascript,html,angularjs,Javascript,Html,Angularjs,我的Angular应用程序运行良好。然而,我厌倦了HTML中有这么多的script标记,所以我写了一个小脚本——我想——为我生成所有标记: var scriptURLs = [ "js/angular.min.js", "js/firebase.min.js", "js/angularfire.min.js", "js/myapp.js", "js/mycontroller.js" // ...and so on ] window.onload = function lo

我的Angular应用程序运行良好。然而,我厌倦了HTML中有这么多的
script
标记,所以我写了一个小脚本——我想——为我生成所有标记:

var scriptURLs = [
  "js/angular.min.js",
  "js/firebase.min.js",
  "js/angularfire.min.js",
  "js/myapp.js",
  "js/mycontroller.js"
  // ...and so on
]
window.onload = function loadScripts(){
  scriptURLs.forEach(function(url){
    var el = document.createElement("SCRIPT");
    el.src = url;
    document.head.appendChild(el);
  });
}
这会生成所有的
脚本
标记,并且URL都是正确的:不会抛出404。但是,这会产生一系列未定义的
角度错误。我在没有
窗口的情况下尝试过。onload
也有相同的结果

在HTML中再次硬编码所有
脚本
标记没有问题,或者我可以使用Grunt或其他依赖关系管理器,但我仍然想知道为什么会发生这种情况

每次我重新加载页面时,抛出错误的文件的顺序略有不同,因此看起来文件是异步加载的,因此执行顺序错误。但我对
script
标记的理解是,它们是同步阻塞、加载和执行的(除非您使用
async
属性,我不这么认为)。所以我有点困惑


有没有想过为什么会发生这种情况?谢谢大家!

删除
ng app
指令,删除
window.onload
,并手动引导我的应用修复了它:

HTML:


最好使用诸如require.js之类的脚本加载管理器,或者使用诸如grunt或gulp之类的自动化工具来添加you@charlietfl是的,但我仍然想理解为什么会发生这种情况。请注意,您已经有了
“.js”
在显示的url中,正在重新连接它。因此,这种方法可能也应该手动引导,而不是使用ng AppGut。我的直觉告诉我,当您尝试加载脚本时,这是在页面生命周期的某个部分中要做的事情。请注意,此脚本发生在
window.onload
中,这是在整个DOM已经加载之后。我想知道这是否会引起问题。
<head>
  <title>MyApp</title>
  <link rel="stylesheet" href="css/style.css" />
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script>
  <script src="https://cdn.firebase.com/js/client/2.2.4/firebase.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angularFire/1.1.3/angularfire.min.js"></script>
  <script src="js/script.js"></script>
</head>
loadScripts();
angular.element(document.head).ready(function(){
  angular.bootstrap(document, ["messageBoard"]);
});