2015-06-04 8 views
1

Мы используем AngularJS, чтобы попытаться отобразить введенный пользователем контент в формате HTML. В большинстве случаев пользователи вводят корректные/безопасные данные, которые мы отображаем правильно, используя ng-bind-html. Иногда они вводят недопустимый HTML, который я бы все еще хотел отобразить в качестве исходного текста.Как я могу поймать ошибки ngSantitize и отобразить html как скрытый текст

Если я использую нг-BIND-HTML, чтобы попытаться отобразить недопустимый HTML я получаю эту ошибку:

[$sanitize:badparse] The sanitizer was unable to parse the following block of html: 

Я не хочу использовать trustAsHtml, потому что я не доверяю нашим дезинфицирующее и хотим, чтобы что на странице не отображается небезопасный html.

+0

просто используйте 'ng-bind' вместо' ng-bind-html', если вы хотите отобразить необработанный текст, который был введен. – Claies

+0

ng-bind отлично работает, но я хочу отобразить отображаемый html, если он действителен. –

ответ

0

Я в конечном итоге создать директиву сделать это. Вот как он используется.

<div ng-bind-html-if-safe="SomeHtml"></div> 

Источник Директива может быть найден here.

1

По ngBindHtmlDirective вы можете сделать это следующим образом:

HTML:

<div ng-if="isSafeHtml()"> 
    <div ng-bind-html="invalidHtml"></div> 
</div> 
<div ng-if="!isSafeHtml()"> 
    {{invalidHtml}} 
</div> 

JS:

$scope.isSafeHtml = function() { 
    return !!$sce.getTrustedHtml($scope.invalidHtml); 
} 

Modified plunkr: http://plnkr.co/edit/Besix3PfQ1TjUEEagfca?p=preview

+0

Интересная идея. Это может быть достаточно хорошим, чтобы заставить нас пройти мимо этого. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^