Javascript 尝试动态加载我的Angular脚本会产生一个;“找不到角度”;错误
我的Angular应用程序运行良好。然而,我厌倦了HTML中有这么多的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
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"]);
});