Подтвердить что ты не робот

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. Не уверен, есть ли ошибка или я что-то не так.

4b9b3361

Ответ 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>