AngularJS использует $sce.trustAsHtml с ng-repeat
Я пытаюсь использовать $sce.trustAsHtml() с свойством объекта в ng-repeat. В результате HTML-код полностью пуст. HTML выводит корректно, используя ngSanitize.
<div ng-repeat="question in questions">
<p ng-bind-html="$sce.trustAsHtml(question.body)">
</p>
</div>
Я нахожусь на AngularJS v1.3.0-beta.3. Не уверен, есть ли ошибка или я что-то не так.
Ответы
Ответ 1
Вы не можете использовать $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;
Ответ 2
ИЛИ иметь фильтр:
angular.module('myApp')
.filter("sanitize", ['$sce', function($sce) {
return function(htmlCode){
return $sce.trustAsHtml(htmlCode);
}
}]);
в html:
<div ng-bind-html="question.body | sanitize"></div>