小编典典

在AngularJS中,HTML模板中包含的所有内联javascript代码均不起作用

html

在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。


阅读 351

收藏
2020-05-10

共1个答案

小编典典

jQlite不支持脚本标签。jQuery确实如此,因此建议您在需要此功能时包括jQuery。

来自Angular的IgorMinar的讨论:

我们在jqlite中研究了支持脚本标签的方法,但是要获得跨浏览器支持需要做的事情涉及很多黑魔法。因此,我们决定在这种情况下,我们现在建议用户仅将jquery和angular一起使用。对我们来说,重写jquery的三分之一以使其在jqlite中起作用是没有意义的。

这是相关的github问题[jqLit​​e应该以与jQuery相同的方式创建元素,在结束问题之前,Igor会使用jQuery对此进行总结:

对于jqlite来说,这太疯狂了,因此我们不会这样做。相反,我们将记录文档,如果您希望在ng:include或ng:view模板中包含脚本元素,则应使用jquery。

2020-05-10