【问题标题】:Displaying pre-formatted html content retrieved from JSON object显示从 JSON 对象检索到的预格式化 html 内容
【发布时间】:2017-03-21 22:46:21
【问题描述】:

我在 JSON 文件中有一个预先格式化的 HTML 内容

<p>This is <b>a formatted</b> <i>content</i></p>

如下:

{
 "description" : "<p>This is <b>a formatted</b> <i>content</i></p>"  
}

我检索了此内容,并希望以格式显示它(包含粗体和斜体内容的段落)。但是,它的显示方式与原来相同。

我尝试使用$(this).html() 使用jquery,我尝试使用&amp;lt;&amp;gt; 而不是&lt;&gt;,但没有任何效果!

这是一个关于 plnkr 的示例:

http://plnkr.co/edit/S1U9TdsMOj4XFUQkbz1X?p=preview

【问题讨论】:

    标签: javascript jquery html angularjs json


    【解决方案1】:

    基本上你需要做几件事才能让它发挥作用:

    HERE 是您代码的分叉工作副本

    1. 你需要参考angular-sanitize.jsangular.module('myApp', ['ngSanitize']);

    2. 添加使用$sce的附加过滤器trustHtml

    3. 在您的 news.html 模板中使用 ng-html-bind 并像这样应用过滤器 - &lt;h2 ng-bind-html="news.description | trustHtml"&gt;&lt;/h2&gt;

    【讨论】:

    • 我不知道是否有更简单的解决方案,但您提供的解决方案运行良好。谢谢
    • @EddyG 这是另一种解决方案,无需在NewsController 内使用$sce 创建客户过滤器,但我认为第一个更好-> plnkr.co/edit/MrbVGWd6mBbwZo6qxlxw?p=preview
    • 我同意你的看法。由于第一个解决方案允许代码重用。我希望你能检查我之前添加的一个问题,但我没有得到答案:stackoverflow.com/questions/42935319/…
    • 我只建议更具体地使用过滤器名称,因为$sce 可以信任不同的东西,但这个过滤器是特定于 html 的。 imo news.description | rawHtml 会更具描述性。
    • @Thomas 我同意这一点并进行了必要的更改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多