举个例子,如果我只是执行:
var = "<a>Asd</a>";
<span>{{ var }}</span>
字符串被打印为文本而不是 HTML,那么我该如何打印 HTML?
举个例子,如果我只是执行:
var = "<a>Asd</a>";
<span>{{ var }}</span>
字符串被打印为文本而不是 HTML,那么我该如何打印 HTML?
你应该使用ng-bind-html
指令。
创建一个绑定,以安全的方式将表达式的评估结果innerHTML到当前元素中。
<ANY ng-bind-html="{expression}">
...
</ANY>
Error: [$sce:unsafe] http://errors.angularjs.org/1.4.5/$sce/unsafe
at Error (native)
正确的方式:
<script src="angular.js"></script>
<script src="angular-sanitize.js"></script>
var myApp = angular.module('app', ['ngSanitize']);
myApp.controller('MyController', ['$scope', function($scope) {
$scope.myHTML = '<a href="#">Hello, World!</a>';
}]);
<div ng-controller="MyController">
<p ng-bind-html="myHTML"></p>
</div>
你也可以尝试这样做:
app.filter('to_trusted', ['$sce', function($sce) { return function(text) { return $sce.trustAsHtml(text); }; }]);
然后,在视图中:
ng-bind-html=" myHTML | to_trusted"
var htmlString='<somehtml />'
,那么它应该是<span ng-bind-html='htmlString'></span>
。 - Fizer Khan