AngularJS在双花括号表示法中呈现HTML

时间:2015-02-11 00:58:07

标签: html angularjs

我有包含HTML的JSON变量。

通过执行:{{source.HTML}} Angular正在显示&lt;&gt;,而不是<>

如何让Angular呈现实际的HTML?



更新:
这是我的控制者:

app.controller('objectCtrl', ['$scope', '$http', '$routeParams',
  function($scope, $http, $routeParams) {

    var productId = ($routeParams.productId || "");

    $http.get(templateSource+'/object?i='+productId)
       .then(function(result) {
          $scope.elsevierObject = {};
          angular.extend($scope,result.data[0]);
        });
  }]);

在我的HTML中,我可以使用:

<div>{{foo.bar.theHTML}}</div>

1 个答案:

答案 0 :(得分:21)

你想显示 HTML(如<b>Hello</b>)或呈现 HTML(如 Hello )吗?

  • 如果要显示它,花括号就足够了。但是,如果您拥有的html实体(如&lt;stuff)需要手动取消它,请参阅this SO question

  • 如果要渲染它,则需要使用ng-bind-html指令而不是curcly括号(其中,FYI是ng-bind指令的快捷方式)。您需要告诉Angular使用$sce.trustAsHtml注入该指令的内容是安全的。

请参阅以下两种情况的示例:

angular.module('test', []).controller('ctrl', function($scope, $sce) {
  $scope.HTML = '<b>Hello</b>';
  
  $scope.trust = $sce.trustAsHtml;
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="test" ng-controller="ctrl">
  <div>Show: {{HTML}}</div>
  <div>Render: <span ng-bind-html="trust(HTML)"></span></div>
</div>