Ng-repeatのオブジェクトのプロパティで$ sce.trustAsHtml()を使用しようとしています。その結果、HTMLは完全に空白になります。ただし、HTMLはngSanitizeを使用して正しく出力します。
<div ng-repeat="question in questions">
<p ng-bind-html="$sce.trustAsHtml(question.body)">
</p>
</div>
ちなみに私はAngularJSv1.3.0-beta.3を使用しています。バグがあるのか、何か間違っているのかわからない。
式は$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;
またはフィルターを持っている:
angular.module('myApp')
.filter("sanitize", ['$sce', function($sce) {
return function(htmlCode){
return $sce.trustAsHtml(htmlCode);
}
}]);
hTMLで:
<div ng-bind-html="question.body | sanitize"></div>