AngularJS ng-bind-html删除所有脚本标记

时间:2016-03-03 13:49:58

标签: angularjs

我是AngularJS的新手。所以这个问题可能非常基本,但我没有从其他帖子得到明确答案,所以我试着提出一个新问题。

我想知道为什么angulars js ng-bind-html 从我想要粘贴在我网站上的内容中删除所有脚本标签。

我只是尝试使用AngularJS文档网站中的这个代码示例,它显示了一个带有java脚本标记的简单bind-html示例。

(function(angular) {
    'use strict';
    angular.module('bindHtml', ['ngSanitize'])
        .controller('Controller', ['$scope', function($scope) {
            $scope.myHTML =
                'I am an <code>HTML</code>string with ' +
                '<a href="#">links!</a> and other <em>stuff</em>'+
                '<script type="javascript">' +
                'alert(1);'+
                '</script>';

        }]);
})(window.angular);

此代码段显示了html模板:

<body ng-app="bindHtml">
    <div ng-controller="Controller">
        <p ng-bind-html="myHTML"></p>
    </div>
</body>

但Chrome Inspector显示AngularJS显然删除了所有java脚本而没有出现警告消息。有办法绕过这个删除或者我必须重写所有旧式jquery和什么javascript进入AngularJS? Screenshot from code inspector of Chrome

谢谢

1 个答案:

答案 0 :(得分:1)

您需要将$ sce服务注入您的控制器或指令等,并使用这样的$ sce服务: -

BluetoothConnectionStatus.Disconnected

并将其绑定在HTML页面中,例如

$scope.myHTML= $sce.trustAsHtml("I am an <code>HTML</code>string with ' +
                '<a href="#">links!</a> and other <em>stuff</em>'+
                '<script type="javascript">' +
                'alert(1);'+
                '</script>");