24

解码传递给 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>
4

1 回答 1

27

如此处所述,在文档中

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

请记住 some_val 必须是一个角度模型(基本上,a$scope.some_val必须存在于您的应用程序的某处)

编辑:

我应该澄清一下:ng-bind-html 是 module 中的一项服务ngSanitize它不包含在 angularJS core中。ng-bind-html-unsafe是核心ng模块的一部分,但它包含您提供的字符串而不对其进行清理(请参阅ngBindHtmlUnsafe 文档中的示例)。

如果您想/需要使用 ngBindHtml,则需要包含 ngSanitize -可在此处获得

于 2013-04-11T15:28:28.630 回答