尝试动态加载我的Angular脚本会产生一个“;未找到角度”;错误
Trying to load my Angular scripts dynamically yields an "angular not found" error
我的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);
});
}
这确实生成了所有的script
标记,并且URL都是正确的:没有抛出404。然而,这会产生一系列angular is not defined
错误。我在没有window.onload
的情况下也试过,结果也是一样的。
再次对HTML中的所有script
标记进行硬编码是没有问题的,或者我可以使用Grunt或其他依赖管理器,但我仍然想知道为什么会发生这种情况。
每次重新加载页面时,引发错误的文件的顺序略有不同,因此看起来文件是异步加载的,因此执行顺序错误。但我对script
标记的理解是,它们是同步阻塞、加载和执行的(除非您使用async
属性,而我不是)。所以我有点困惑!
有没有想过为什么会发生这种事?非常感谢。
删除ng-app
指令、删除window.onload
并手动引导我的应用程序修复了它:
HTML:
<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>
JS:
loadScripts();
angular.element(document.head).ready(function(){
angular.bootstrap(document, ["messageBoard"]);
});
相关文章:
- 我怎么能把一个错误当作未捕获的错误来记录呢
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- javascript window.location在检查firebug时给了我一个错误的url路径
- new SharedWorker(“whatever.js”)返回一个错误
- JSON.parse给了我一个错误,但JSONLint说它'是一个有效的json
- 有人能向我解释一下我犯的一个错误吗
- Jasmine:测试setTimeout函数会抛出一个错误
- JavaScript中的一个错误
- 为什么jqPlot显示了一个错误的饼图,其中包含通过AJAX检索的数据
- Webrtc和socket.io:createanswer()总是有一个错误.为什么?我的代码连接了两个对等体,但其中只
- 使用 jQuery 构建一个元素会给我一个错误
- Chai 期望 [函数] 抛出一个(错误)未通过测试(使用 Node)
- 在我的 jquery 函数中得到一个错误
- Addeventlistener 已转换为 IE.也许是另一个错误
- 我有一个错误,由于某种原因,号码被更改了,而不是名字
- 我无法建立离子机器人项目..它给了我一个错误:生成cmd enont
- JQueryAJAX调用:304 respose产生一个错误
- 继续得到一个错误,即某个东西不是函数,但找不到原因
- jQuerylib会导致一个错误,直到刷新为止
- HTML图像加载触发一个错误