以下是一个示例代码: 我在html正文的末尾有以下代码
<script type="text/javascript">
var js = document.createElement("script");
js.src = "forms/dynamicForms/sampleFormController.js";
document.body.appendChild(js);
angular.bootstrap(document, ['MyApp']);
</script>
当我运行我的应用程序时,找不到sampleFormController,如果我在Chrome中检查body标签,脚本会作为子标签添加到body标签。
当我修改代码并添加超时时,它可以正常工作
<script type="text/javascript">
var js = document.createElement("script");
js.src = "forms/dynamicForms/sampleFormController.js";
document.body.appendChild(js);
setTimeout(myFunction, 2000);
function myFunction() {
angular.element(function() {
angular.bootstrap(document, ['MyApp']);
});
}
</script>
有没有办法让我的第一个代码在没有添加超时的情况下工作?
答案 0 :(得分:2)
您可以将脚本标记的 onload 属性设置为myFunction()
。有关详细信息,请参阅MDN page on HtmlScriptElement以及与下面修改后的代码段类似的示例。另外,请参阅this example plunker中使用的内容。
同样,您可以将 onerror 属性设置为函数,以便在发生错误时处理该情况。由于此代码是异步的,因此您可以使用Promises - 请参阅this example。
<script type="text/javascript">
var js = document.createElement("script");
js.src = "http://elliott.andrewz.org/data/sampleController.js";
document.body.appendChild(js);
js.onload = myFunction;
function myFunction() {
angular.element(function() {
angular.bootstrap(document, ['MyApp']);
});
}
</script>