我曾经能够用来ng-bind-html-unsafe输出未经消毒的代码(因为消毒发生在服务器端)。
ng-bind-html-unsafe
但是现在这个选择消失了吗?我知道我可以使用,$sce.trustAsHtml但是当不安全易于使用时,将其添加到整个JavaScript上将是一个巨大的痛苦。
$sce.trustAsHtml
我怎么不安全回来?
好吧,仅创建您自己的指令非常简单,这是一个示例。
指令 :
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