AngularJS $sce.trustAsHtml() 重标记数据

AngularJS $sce.trustAsHtml() on heavily tagged data

我知道 $sce.trustAsHtml() 可以让 AngularJS 按原样显示 HTML。坐立不安之后,我意识到这并非在所有情况下都有效。特别是当该数据中包含其他标签时。

如果我使用简单的 HTML 标签(br、b 等),它工作正常。但是,我有很多行数据如下所示:

<div class="question">This is question1</div>
<div class="answer"> this is an answer1</div>
<div class="question">This is question2</div>
<div class="answer"> this is an answer2</div>

上面的条目是 MySQL 数据库中文本列的示例。执行以下操作,Angular 呻吟:

Javascript:

$http.get(site_url).success(function(response) {
    $scope.textClean = $sce.trustAsHtml(response.text);
});

HTML:

<div class="box" ng-bind-html="textClean"></div>

我试过将它存储在其他标签中,但不行。任何可行的解决方法的想法?当然 Angular 可以解决这个问题。如果我删除标签,它会显示,当然,w/o 需要的特征。

编辑:哇——我真是疏忽了。好吧,我想通了这个问题。我通过 PHP 脚本从 MySQL 数据库获取数据。 PHP 以 JSON 格式输出。由于 class 包含引号,因此错误发生在 $http.get() 部分......而不是在打印中。我进行了一些调试,使我相信并非如此,但显然我错了。谢谢你的时间。

我创建了一个 plunker,显示

<div class="question">This is question1</div>
<div class="answer"> this is an answer1</div>
<div class="question">This is question2</div>
<div class="answer"> this is an answer2</div>

可以通过$sce.trurstAsHtml()

解析

如果您的回复包含任何 angular 指令,则该 angular 指令将不起作用。为此,您需要使用 $compile 服务。