关于重度标记数据的AngularJS $ sce.trustAsHtml()

时间:2015-01-05 03:57:46

标签: javascript html angularjs

我知道$ 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 moans:

使用Javascript:

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

HTML:

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

我已经尝试将其存储在其他标签中,但没有骰子。任何可行的解决方法的想法?当然Angular可以解决这个问题。如果我删除标签,它会显示,但当然没有所需的特征。

编辑:哇 - 我的疏忽是什么。好的,我想出了这个问题。我通过PHP脚本从MySQL DB获取数据。 PHP以JSON格式吐出。由于类包含引号,因此在$ http.get()部分中发生错误...不在打印中。我做了一些调试让我相信,但显然我错了。谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

我创建了一个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服务。