Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在AngularJS中,HTML模板中包含的任何内联javascript代码都不会';行不通_Javascript_Html_Angularjs - Fatal编程技术网

在AngularJS中,HTML模板中包含的任何内联javascript代码都不会';行不通

在AngularJS中,HTML模板中包含的任何内联javascript代码都不会';行不通,javascript,html,angularjs,Javascript,Html,Angularjs,在AngularJS中,HTML模板中包含的任何内联javascript代码都不起作用 例如: main.html文件: <div ng-include="'/templates/script.html'"></div> <script type="text/javascript"> alert('yes'); </script> 和script.html文件: <div ng-include="'/templates/scr

在AngularJS中,HTML模板中包含的任何内联javascript代码都不起作用

例如:

main.html文件:

<div ng-include="'/templates/script.html'"></div>
<script type="text/javascript">
    alert('yes');
</script>

和script.html文件:

<div ng-include="'/templates/script.html'"></div>
<script type="text/javascript">
    alert('yes');
</script>

警惕(“是”);
当我打开主页时,我希望看到一条警告消息,说“是”,但什么也没发生。我认为AngularJS中的一些安全限制阻止了内联脚本,但我找不到任何解决方法


注意:我不使用jQuery或任何其他框架,只使用AngularJS 1.2.7。

ng include
添加内容时触发的事件是
$includeContentLoaded
。您的脚本应包含在此事件中:

例如():

此外,您还可以使用
onload
属性设置init函数:

html

控制器

$scope.alertMe=function(){
    $window.alert('sending alert on load');
  }

ng include
添加内容时触发的事件是
$includeContentLoaded
。您的脚本应包含在此事件中:

例如():

此外,您还可以使用
onload
属性设置init函数:

html

控制器

$scope.alertMe=function(){
    $window.alert('sending alert on load');
  }

Angular使用$sanitize on
ng include
指令删除脚本。更好的模板方法是为该模板创建控制器

最好为模板使用单独的控制器

在template.html中

<form role="form" ng-controller="LoginController">
   <input type="text" placeholder="Email" ng-model="email">
   <input type="password" placeholder="Password" ng-model="password">
    <button class="btn btn-success" ng-click="login()">Sign in</button>
</form>

Angular使用$sanitize on
ng include
指令删除脚本。更好的模板方法是为该模板创建控制器

最好为模板使用单独的控制器

在template.html中

<form role="form" ng-controller="LoginController">
   <input type="text" placeholder="Email" ng-model="email">
   <input type="password" placeholder="Password" ng-model="password">
    <button class="btn btn-success" ng-click="login()">Sign in</button>
</form>

jQlite不支持脚本标记。jQuery可以,因此如果需要此功能,建议包括jQuery

从Angular的Igor Minar中:

我们研究了jqlite中的支持脚本标记,但是需要做什么呢 要获得跨浏览器支持,需要大量的黑魔法。对于 出于这个原因,我们决定现在只推荐 在这种特殊情况下,用户将jquery与angular一起使用。信息技术 我们重写三分之一的jquery来获得这个结果是没有意义的 在jqlite工作

以下是相关的github问题,Igor在结束该问题之前总结如下:

这对jqlite来说太疯狂了,所以我们不打算这么做。 相反,如果您想要脚本元素,我们将记录它 在ng:include或ng:view模板中,应该使用jquery


jQlite不支持脚本标记。jQuery可以,因此如果需要此功能,建议包括jQuery

从Angular的Igor Minar中:

我们研究了jqlite中的支持脚本标记,但是需要做什么呢 要获得跨浏览器支持,需要大量的黑魔法。对于 出于这个原因,我们决定现在只推荐 在这种特殊情况下,用户将jquery与angular一起使用。信息技术 我们重写三分之一的jquery来获得这个结果是没有意义的 在jqlite工作

以下是相关的github问题,Igor在结束该问题之前总结如下:

这对jqlite来说太疯狂了,所以我们不打算这么做。 相反,如果您想要脚本元素,我们将记录它 在ng:include或ng:view模板中,应该使用jquery


包括jQuery和
angular.js
jQuery.js
的变更顺序。jQuery必须是第一个,否则它就不起作用了

包括jQuery和
angular.js
jQuery.js
的变更顺序。jQuery必须是第一个,否则它就不起作用了

你知道禁用该消毒的解决方法吗?我正在研究它,但什么也没发生。如果您通过js使用,似乎有一些方法可以绕过消毒过程,但我找不到一种方法专门使指令本身忽略消毒。您知道禁用该消毒的解决方法吗?我正在研究它,但没有任何东西跳出来。如果您通过js使用,似乎有一些方法可以绕过消毒过程,但我找不到一种方法专门使指令本身忽略消毒。您知道禁用该消毒的解决方法吗?我正在研究它,但没有任何东西跳出来。如果您通过js使用清理过程,似乎有一些方法可以绕过清理过程,但我找不到一种方法专门让指令本身忽略清理。我加载了jQuery,现在
警报
起作用了。但控制器不工作。你知道为什么吗?jQuery已经包含在我的代码中,但它仍然不起作用。还有其他想法吗?@molerat这里也一样,但是如果在angular-I加载jquery之前添加这个jquery版本,那么它就可以工作了,现在
警报也可以工作了。但控制器不工作。你知道为什么吗?jQuery已经包含在我的代码中,但它仍然不起作用。还有其他想法吗?@molerat这里也一样,但是如果在angular-I加载jquery之前添加这个jquery版本,那么它就可以工作了,现在
警报也可以工作了。但控制器不工作。你知道为什么吗?jQuery已经包含在我的代码中,但它仍然不起作用。还有其他想法吗?@molerat这里也一样,但是如果这个jquery版本是在angular之前添加的,那么它会起作用-