14

我正在尝试将 $sce.trustAsHtml() 与 ng-repeat 中的对象属性一起使用。结果是 HTML 是完全空白的。虽然使用 ngSanitize 正确输出 HTML。

<div ng-repeat="question in questions">
    <p ng-bind-html="$sce.trustAsHtml(question.body)">
    </p>
</div>

顺便说一句,我在 AngularJS v1.3.0-beta.3 上。不确定是否有错误或我做错了什么。

4

2 回答 2

29

您不能$sce.trustAsHtml在表达式中使用(除非$sce是 上的属性$scope),因为表达式是在$scope.

最干净的方法是使用ngSanitize.
第二个最干净的方法是在以下内容中公开$sce.trustAsHtml为函数$scope

<div ng-repeat="...">
    <p ng-bind-html="trustAsHtml(question.body)"></p>
</div>

$scope.trustAsHtml = $sce.trustAsHtml;
于 2014-06-27T19:37:27.737 回答
15

或者有一个过滤器:

angular.module('myApp')
    .filter("sanitize", ['$sce', function($sce) {
        return function(htmlCode){
            return $sce.trustAsHtml(htmlCode);
        }
}]);

在 html 中:

<div ng-bind-html="question.body | sanitize"></div>
于 2015-02-05T11:49:32.120 回答