使用Javascript包含AngularJS库时出错
我正在加载angular库并检查该库是否已包含在脚本中使用Javascript包含AngularJS库时出错,javascript,angularjs,Javascript,Angularjs,我正在加载angular库并检查该库是否已包含在脚本中 <body> <div ng-app="myApp"> {{1+1}} </div> <script type="text/javascript"> var angular; // load angular library if undefined if (typeof window.angular === 'undefined') {
<body>
<div ng-app="myApp">
{{1+1}}
</div>
<script type="text/javascript">
var angular;
// load angular library if undefined
if (typeof window.angular === 'undefined') {
var script_tag = document.createElement('script');
script_tag.type = 'text/javascript';
script_tag.src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js";
document.body.appendChild(script_tag);
console.log(script_tag, 'angular load');
} else {
console.log('script found');
}
</script>
//load angular script
<script type="text/javascript" src="widget-angular.js"></script>
</body>
我得到的错误是:
未捕获的TypeError:无法调用未定义的方法“module”
首先,我认为错误的原因是在小部件脚本之后加载了angular库。但我做了各种检查,它装载得很好。我不知道为什么它不识别“模块”。
如果我直接这样给图书馆打电话:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
它起作用了。但我需要的结果是,它检查库是否已经包括在内。如果不是,则包括库脚本
提前谢谢你 您正在附加到将其放置在其他脚本标记之后的
body
中。因此,在您尝试访问angular
之前,它不会被编译
可以使用document.write()
或document.head.appendChild(script\u标记)
通过在浏览器控制台/developer tools中检查实时html应该可以很容易地验证这一点,我不认为Angular在调用时被加载。小部件肯定是先加载的。您误解了控制台告诉您的内容。为什么需要此检查?通常像这样的检查是相反的,首先从googleapis静态请求,然后检查它是否正确加载,如果没有,然后从本地加载。你似乎在做相反的事。对我来说,这似乎是不必要的复杂性。我之所以这么做,是因为我希望能够在各种网站上使用它。如果其中一个网站已经加载了AngularJS库,我不想再次加载。它在控制台中显示的顺序首先是angular库,然后是widget-angular.js。如果我是console.log(script_标记);我看到
这很好。但它仍然显示了由于定义了append
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>