Javascript 将JSON HTML字符串转换为HTML

Javascript 将JSON HTML字符串转换为HTML,javascript,jquery,html,angularjs,json,Javascript,Jquery,Html,Angularjs,Json,我已经使用Moodle WebService开发了一个AngularJS Moodle webapp,我正在展示Moodle在线学习的一个测验 我可以使用$http.获取每个问题。现在的问题是,当我得到这个问题时,每个问题都有一个HTML代码,如下所示: 我正在使用此控件获取响应(url5) 当我使用以下代码在我的HTML中显示问题时,我将HTML代码作为字符串获取,并尝试使用ng bind HTML,但出现了一个错误 <div role="main" id="main" class="

我已经使用Moodle WebService开发了一个AngularJS Moodle webapp,我正在展示Moodle在线学习的一个测验

我可以使用
$http.
获取每个问题。现在的问题是,当我得到这个问题时,每个问题都有一个HTML代码,如下所示:

我正在使用此控件获取响应(url5)

当我使用以下代码在我的HTML中显示问题时,我将HTML代码作为字符串获取,并尝试使用
ng bind HTML
,但出现了一个错误

<div role="main" id="main" class="ui-content scroll" ng-app="mainApp">
<div data-role="content" class="pane" id="">
    <div class="page-wrap scroll" ng-controller="quizCtrl">
          <div ng-repeat="question in questions | orderBy : 'question.number'" id="{{question.number}}">
            <div>
                <!--{{question.html}}<br /><br />-->
                <p ng-bind-html="question.html"> </p><br /><br /> 
            </div>
          </div> 
    </div>
</div>
当我使用这行代码时,
{{{question.html}

,我得到了以下信息:


谢谢你们的帮助,伙计们

您需要使用
$sce
服务

$sce.trustAsHtml(varWithHTML)
使绑定html工作

正如文档中所说的$sce

我认为您需要严格的上下文转义服务(
$sce
)。 这是一个允许您指定允许任意HTML的上下文的服务

文件:$sce

将其注入控制器:

app.controller('quizCtrl', function($rootScope, $scope, $http, $sce) 
...
$http.get(url5).then(function (response) {
    console.log(response.data);
    $sce.trustAsHtml = $sce.trustAsHtml; // <- needs to be exposed on $scope
    $scope.questions = $sce.trustAsHtml(response.data.questions);
})
...

我试过使用一个特定变量,比如
$scope.questions2=$sce.trustAsHtml(response.data.questions[0].html)
,但是如果您尝试使用
$scope.questions=response.data.questions
,ng repeat
不起作用。好。参考这个答案,它解释了如何解决这个问题。我也更新了我的答案。我必须使用这个过滤器
.filter(“清理”,“清理”,“清理”,“清理”,“清理”,“清理”,“清理”,“清理”,“清理”,“清理”,“清理”函数($sce){return function(htmlCode){return$sce.trustAsHtml(htmlCode);}}])
谢谢你的帮助!当然,创建过滤器是一种方法。本质上,您不能在表达式中使用
$sce.trustAsHtml
。如果使用'angular.js'而不是'angular.min.js',您将看到错误文本,而不是链接。:)
$sce.trustAsHtml(varWithHTML)
app.controller('quizCtrl', function($rootScope, $scope, $http, $sce) 
...
$http.get(url5).then(function (response) {
    console.log(response.data);
    $sce.trustAsHtml = $sce.trustAsHtml; // <- needs to be exposed on $scope
    $scope.questions = $sce.trustAsHtml(response.data.questions);
})
...
{{questions}}