小编典典

AngularJS ng-bind-html-unsafe替换

angularjs

我曾经能够用来ng-bind-html-unsafe输出未经消毒的代码(因为消毒发生在服务器端)。

但是现在这个选择消失了吗?我知道我可以使用,$sce.trustAsHtml但是当不安全易于使用时,将其添加到整个JavaScript上将是一个巨大的痛苦。

我怎么不安全回来?


阅读 213

收藏
2020-07-04

共1个答案

小编典典

好吧,仅创建您自己的指令非常简单,这是一个示例。

指令

app.directive('bindHtmlUnsafe', function( $compile ) {
    return function( $scope, $element, $attrs ) {

        var compile = function( newHTML ) { // Create re-useable compile function
            newHTML = $compile(newHTML)($scope); // Compile html
            $element.html('').append(newHTML); // Clear and append it
        };

        var htmlName = $attrs.bindHtmlUnsafe; // Get the name of the variable 
                                              // Where the HTML is stored

        $scope.$watch(htmlName, function( newHTML ) { // Watch for changes to 
                                                      // the HTML
            if(!newHTML) return;
            compile(newHTML);   // Compile it
        });

    };
});

用法

<div bind-html-unsafe="testHTML"></div>

演示:
http
//jsfiddle.net/cC5VZ/2

2020-07-04