AngularJS显示转义的HTML

AngularJS show escaped HTML

本文关键字:HTML 转义 显示 AngularJS      更新时间:2023-09-26

你好,考虑我从我的HTML从我的服务器得到以下代码:

&quote;<b>Demo</b>&quote; &amp;Hase&gt;

我怎么把它渲染成

"演示"

而demo将是"胖",有一个方法在AngularJS?实际上,让demo变成加粗对$sceng-bind-html来说没有问题,但其他东西仍然是&quote;或者,

HTML来自elasticsearch的escape: 'html'高亮功能,所以实际上我们没有将数据转义到elasticsearch中,而是让elasticsearch来做。

这实际上使它工作:

    function unescapeHtml(safe) {
        return safe.replace(/&amp;/g, ''&') // this needs to be /& ?!
            .replace(/&lt;/g, '&lt;')
            .replace(/&gt;/g, '&gt;')
            .replace(/&quot;/g, '&quot;')
            .replace(/&apos;/g, '&apos;')
            .replace(/&#039;/g, "''");
    }

不知道为什么强硬…太蠢了,也许有人能开导我一下。也许是charset问题?

您可以通过创建自定义过滤器和不转义html

来实现您想要的效果。
 angular.module('app', [])
     .filter('unescape', function($sce) {
          function unescapeHtml(safe) {
             return safe.replace(/&amp;/g, '&')
                .replace(/&lt;/g, '<')
                .replace(/&gt;/g, '>')
                .replace(/&quot;/g, '"')
                .replace(/&#039;/g, "'");
          }
          return function(input) {
               var unescaped = unescapeHtml(input);
               return $sce.trustAsHtml(unescaped);
          };
     });

这样使用

{{ $ctrl.content | unescape }}