【问题标题】:How to print html string as html如何将html字符串打印为html
【发布时间】:2014-02-09 11:35:21
【问题描述】:

例如,如果我这样做:

var = "<a>Asd</a>";

<span>{{ var }}</span>

字符串打印为文本而不是html,那么如何打印html?

【问题讨论】:

    标签: javascript html angularjs text


    【解决方案1】:

    您应该使用ng-bind-html directive

    创建一个绑定,该绑定将 innerHTML 的评估结果 以安全的方式表达到当前元素中。

    <ANY ng-bind-html="{expression}">
       ...
    </ANY>
    

    【讨论】:

    • 表达式可以是变量或函数。让我们考虑var htmlString='&lt;somehtml /&gt;',那么它应该是&lt;span ng-bind-html='htmlString'&gt;&lt;/span&gt;
    • 现在您需要参考 ng-sanitize 来完成此操作。 docs.angularjs.org/api/ngSanitize
    【解决方案2】:

    在使用 ng-bind-html 指令之前,您必须包含 $sanitize 服务,否则会引发错误。

    错误:$sce:unsafe 需要一个安全/可信的值 尝试在安全上下文中使用不安全的值。

    Error: [$sce:unsafe] http://errors.angularjs.org/1.4.5/$sce/unsafe
        at Error (native)
    

    正确的方法:

    <script src="angular.js"></script>
    <script src="angular-sanitize.js"></script>
    
    var myApp = angular.module('app', ['ngSanitize']);
    
    myApp.controller('MyController', ['$scope', function($scope) {
      $scope.myHTML = '<a href="#">Hello, World!</a>';
    }]);
    
    <div ng-controller="MyController">
     <p ng-bind-html="myHTML"></p>
    </div>
    

    https://docs.angularjs.org/api/ngSanitize

    https://docs.angularjs.org/api/ng/directive/ngBindHtml

    【讨论】:

      【解决方案3】:

      你也可以试试这样的:

      app.filter('to_trusted', ['$sce', function($sce) { 返回函数(文本){ 返回 $sce.trustAsHtml(text); }; }]);

      然后,在视图中:

      ng-bind-html="myHTML | to_trusted"

      【讨论】:

      • 这个在angular项目中添加到哪里了?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 2016-11-24
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      相关资源
      最近更新 更多