0

我有一个消息列表,其中的文本包含一些我想要显示的 html。因此,正如这里这里所建议的,我目前正在尝试的是:

<div ng-repeat="message in messages">
    {{ message.sender_name }} - <div ng-bind-html="message.text"></div>
</div>

它显示message.sender_name,但不显示message.text。当我简单地这样做{{ message.text }}时,它会正确显示文本(但显示 raw<br>而不渲染它们)。

有谁知道为什么这不起作用?

4

2 回答 2

2

ngBindHtml指令需要$sce 服务来解析和显示绑定的 html。因此,您需要在模块声明中包含 ngSanitize 模块作为ng-bind-html工作的依赖项。

您可以从以下网址下载适当的版本:- http://ajax.googleapis.com/ajax/libs/angularjs/1.XY/angular-sanitize.js

前任:-

angular.module('myApp', ['ngSanitize', ..otherdeps]);
于 2014-12-10T18:58:10.533 回答
1

ng-bind-html 评估表达式并以安全的方式将生成的 HTML 插入到元素中。默认情况下,生成的 HTML 内容将使用 $sanitize 服务进行清理。要利用此功能,请确保 $sanitize 可用,例如,将 ngSanitize 包含在模块的依赖项中(而不是核心 Angular)。为了在模块的依赖项中使用 ngSanitize,您需要在应用程序中包含“angular-sanitize.js”。顺便说一句,这是 Angular js 文档中的描述。您还可以在此处查看将 angular-sanitize 与 ng-bind-html 一起使用的示例。

祝你好运。

于 2014-12-10T20:26:15.423 回答