我知道$ 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()部分中发生错误...不在打印中。我做了一些调试让我相信,但显然我错了。谢谢你的时间。答案 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服务。