在AngularJS中,HTML模板中包含的任何内联javascript代码都不会';行不通
在AngularJS中,HTML模板中包含的任何内联javascript代码都不起作用 例如: main.html文件:在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
<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之前添加的,那么它会起作用-