14

ng-repeat のオブジェクトのプロパティで $sce.trustAsHtml() を使用しようとしています。その結果、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です。
2 番目にクリーンなのは、次$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 に答える