javascript - 尝试动态加载我的 Angular 脚本会产生 "angular not found"错误

标签 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 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"]);
});

关于javascript - 尝试动态加载我的 Angular 脚本会产生 "angular not found"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34582391/

相关文章:

javascript - JavaScript 中鼠标移出时恢复旧版 CSS

html - 在 float 子 <div> 上使用高度 100%

html - 已 float 的中心图标

javascript - 如何使浏览器加载/旋转栏在某些惰性操作中处于事件状态?

javascript - 没有数据时如何隐藏标签?

javascript - 在 Angular 中重用部分和 Controller

javascript - 如果 id 具有特定类,则使用 JS/jQuery Show() + Hide() 进行排序?

javascript - jsplumb 1.4.1 deleteEndpoint by uuid or object 示例

javascript - 如何数到3?

Java jsoup 选择内容