在AngularJS中,HTML模板中包含的任何内联javascript代码均不起作用。
例如:
main.html文件:
<div ng-include="'/templates/script.html'"></div>
和script.html文件:
<script type="text/javascript"> alert('yes'); </script>
当我打开主页时,我希望收到一条警告消息,说“是”,但是什么也没有发生。我认为AngularJS中的一些安全限制阻止了内联脚本,但是我找不到任何解决方法。
注意:我不使用jQuery或任何其他框架,仅使用AngularJS 1.2.7。
jQlite不支持脚本标签。jQuery确实如此,因此建议您在需要此功能时包括jQuery。
来自Angular的IgorMinar的讨论:
我们在jqlite中研究了支持脚本标签的方法,但是要获得跨浏览器支持需要做的事情涉及很多黑魔法。因此,我们决定在这种情况下,我们现在建议用户仅将jquery和angular一起使用。对我们来说,重写jquery的三分之一以使其在jqlite中起作用是没有意义的。
这是相关的github问题[jqLite应该以与jQuery相同的方式创建元素,在结束问题之前,Igor会使用jQuery对此进行总结:
对于jqlite来说,这太疯狂了,因此我们不会这样做。相反,我们将记录文档,如果您希望在ng:include或ng:view模板中包含脚本元素,则应使用jquery。