解码传递给Angular表达式的字符串中包含的HTML的最佳方法是什么?
示例:
如果我从服务器返回的字符串如下:
var some_val = "Hello <strong>World</strong>!"
如何让它呈现HTML而不是将其显示为文本?
<!-- Renders to Hello <strong>World</strong>! -->
<span>{{ some_val }}</span>
更新:这是转发器中的实际用例:
作品(未经过抽样)
<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>
答案 0 :(得分:26)
如上所述here, in the docs:
<span ng-bind-html="some_val"></span>
请记住,some_val必须是角度模型(基本上,$scope.some_val
必须存在于应用中的某个位置)
编辑:
我应该澄清:ng-bind-html是模块ngSanitize
中的服务,不包含在angularJS核心中。 ng-bind-html-unsafe
是核心ng
模块的一部分,但它包含您提供的字符串而不对其进行清理(请参阅the ngBindHtmlUnsafe docs中的示例)。
如果您需要/需要使用ngBindHtml,则需要包含ngSanitize - available here