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

Декодирование HTML в выражении Angular

Какой лучший способ декодирования HTML, который содержится в строках, переданных в выражение Angular?

Пример:

Если у меня есть строка, возвращаемая с сервера следующим образом:

var some_val = "Hello <strong>World</strong>!"

Как я могу визуализировать HTML, а не отображать его как текст?

<!-- Renders to Hello <strong>World</strong>! -->
<span>{{ some_val }}</span>

Обновление: здесь фактический прецедент в ретрансляторе:

Работы (unsanitized)

<div ng-repeat="category in some_list">
   <p>{{ category.name }}</p>
   <p ng-repeat="bullet in category.bullets">{{ bullet.desc }}</p>
</div>

Не работает вообще

<div ng-repeat="category in some_list">
   <p ng-bind-html="category.name"></p>
   <p ng-repeat="bullet in category.bullets" ng-bind-html="bullet.desc"></p>
</div>
4b9b3361

Ответ 1

Как описано здесь, в документах:

<span ng-bind-html="some_val"></span>

Помните, что some_val должна быть моделью angular (в основном, $scope.some_val должен существовать где-то в вашем приложении)

EDIT:

Я должен уточнить: ng-bind-html - это сервис в модуле ngSanitize, , который не включен в ядро ​​angularJS. ng-bind-html-unsafe является частью основного модуля ng, но он включает строку, которую вы поставляете, без ее очистки (см. пример в документах ngBindHtmlUnsafe).

Если вам нужно/нужно использовать ngBindHtml, вам нужно включить ngSanitize - здесь