【问题标题】:Why this doesn't display HTML为什么这不显示 HTML
【发布时间】:2016-06-17 15:29:01
【问题描述】:

在我的 Angular 应用程序中,在我检索的数据中,有一些文本可能包含换行符、链接和其他我需要转换为 HTML 的内容。所以我实现了这个函数来将这些字符串“转换”为 html:

$scope.textToHTML = function(text){
    if(!text){return "";}
    var html = text.replace("\r\n", "<br>")// Windows line break
        .replace("\n", "<br>")// Carriage Return
        .replace("\r", "<br>")// Line feed
        .replace("\t", "<span style=\"margin-left: 20px;\"></span>")
        .replace("(https?:\\/\\/[^\\s]*)", "<a href=\"$1\" target=\"_blank\">$1</a>");

    return $sce.trustAsHtml(html); 
}

然后我这样使用它: &lt;p data-ng-bind-html=""&gt;{{textToHTML(company.description)}}&lt;/p&gt;.

当我删除 data-ng-bind-html 时,我看到了预期的代码(转义),但有了它,我的 &lt;p&gt; 始终为空。我阅读了 Angular $sce 文档,但我一定遗漏了一些东西,因为我仍然不太明白 trustAs() 做了什么......

它是否应该返回一种带有可以安全解释的代码的字符串? 或者它应该说 angular “这个字符串是安全的,如果你在 data-ng-bind-html 属性中看到它,就好像!”

【问题讨论】:

    标签: javascript angularjs ng-bind-html


    【解决方案1】:

    ngBindHtml 的正确用法是:

    <p data-ng-bind-html="textToHTML(company.description)"></p>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-25
      • 2023-03-14
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      相关资源
      最近更新 更多