在角度范围内传递脚本

时间:2015-07-25 08:18:07

标签: javascript jquery angularjs

您好我正在尝试通过角度范围传递javascript代码,但在视图页面上它呈现为文本。我也尝试了ng-Sanitize,但它也没有用。

<div id="xv-embed-13042533"></div> <script type="text/javascript"> (function() { var tn = document.createElement('script'); tn.type = 'text/javascript'; tn.async = true; tn.src = 'http://flashservice.example.com/embedcode/13042533/510/400/embed.js'; var s = document.getElementById('xv-embed-13042533'); s.parentNode.insertBefore(tn, s); })(); </script>

但在“查看”页面上,它会以下面的格式呈现为文本

<div id="xv-embed-13042533"></div> <script type="text/javascript"> (function() { var tn = document.createElement('script'); tn.type = 'text/javascript'; tn.async = true; tn.src = 'http://flashservice.example.com/embedcode/13042533/510/400/embed.js'; var s = document.getElementById('xv-embed-13042533'); s.parentNode.insertBefore(tn, s); })(); </script>

我正在使用以下语法

<div id="Div2" ng-bind-html="htmltext2"></div> <br/>


1 个答案:

答案 0 :(得分:0)

您应该使用$sce.trustAsHtml

$scope.unsafeHtml = $sce.trustAsHtml('<script>...<\/script>');

ng-bind-html

一起使用
<div ng-bind-html="unsafeHtml"></div>

但是,上述操作无效,因为jqLit​​e无法正确处理<script>。您必须求助于such workaround或在Angular之前加载jQuery,因此jQuery将用作angular.element而不是jqLit​​e。

此处an example