在Angular字符串中使用HTML实体

mcc*_*inz 16 javascript string angularjs

给定$ scope模型中包含HTML实体的字符串,如何确保实体正确显示为HTML字符而不是文字字符串?

HTML实体 - MDN词汇表

http://plnkr.co/edit/0BliljcDkj0vvj3jdEqz?p=preview

<!DOCTYPE html>
<html>

  <head>
    <script data-require="angular.js@*" 
            data-semver="1.2.13" 
            src="http://code.angularjs.org/1.2.13/angular.js"></script>

  </head>

  <body>
    <div ng-controller="htmlChar">{{title}}</div>

    <script>

      angular.element(document).ready(function(){

        var app=angular.module("app",[]);
        app.controller("htmlChar",function($scope){
          $scope.title = "&copy; Acme";
        });
        angular.bootstrap(document, ['app']);

      });

    </script>

  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Dan*_*nez 16

并不需要$sce绑定到与HTML字符串.您只需要注入ngSanitize您的应用程序(它不是核心模块),然后使用ng-bind-html属性指令.

JavaScript的

var app = angular.module('app', ['ngSanitize']);

app.controller('MainCtrl', function($scope) {
    $scope.title = '&#189; Cookies &amp; <span class="cream">Cream</span>';
});
Run Code Online (Sandbox Code Playgroud)

HTML

<div ng-bind-html="title"></div>
Run Code Online (Sandbox Code Playgroud)

Plunkr


rom*_*ger 14

随着$ sce.你需要明确告诉angular内容是html.

<div ng-controller="htmlChar" ng-bind-html="title"></div>

<script>

  angular.element(document).ready(function(){

    var app=angular.module("app",[]);
    app.controller("htmlChar",function($scope, $sce){
      $scope.title = $sce.trustAsHtml("&copy; Acme");
    });
    angular.bootstrap(document, ['app']);

  });

</script>
Run Code Online (Sandbox Code Playgroud)

http://plnkr.co/edit/9iNnRC7AxFptnQZLPtYR?p=preview

  • 他必须使用ng-bind-html (9认同)