Декодирование 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>
Ответы
Ответ 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 - здесь