ng-bind-html-unsafe不解析angularjs中的html

时间:2013-06-21 05:07:52

标签: angularjs

我有一点奇怪的时间,角度不解析在JSON中提供的HTML。 我正在使用ng-bind-html-unsafe指令,该指令从JSON获取字符串并将其输出到页面上,但浏览器不会解析html。

我正在使用angularjs V1.1.5,但也尝试过旧版本。

我的绑定标记如下所示:

<div class="announcement-wrapper" ng-repeat="announcement in announcements" id="{{announcement.announcementId}}">
  <p ng-bind-html-unsafe="announcement.content"></p>
</div>

和提供绑定的JSON是:

{
"userId": "s123456",
"responseCode": "OK",
"responseMessage": "",
"timeStamp": 1371778685560,
"announcements": [
    {
        "announcementId": 1518,
        "title": "Daves second announcement",
        "content": "&lt;p&gt;Announcement for Chad&lt;/p&gt;",
        "releaseDate": "13 June 2013",
        "important": false,
        "read": true
    },
    {
        "announcementId": 1511,
        "title": "Onshore HE and TAFE Announcement",
        "content": "&lt;p&gt;This announcement is only for Onshore HE and TAFE persons onshore.&lt;/p&gt;&lt;p&gt;High Priority.&lt;/p&gt;",
        "releaseDate": "04 June 2013",
        "important": false,
        "read": true
    }
  ]
}

正在发生的事情是编码的字符正在页面上生成,只是它们没有被浏览器解析为输出为实际的段落标记。例如。第二个公告正在输出到页面上

<p>This announcement is only for Onshore HE and TAFE persons onshore.</p><p>High Priority.</p>

我也尝试过使用ng-bind-html指令并且具有sanitize依赖性,并且它们都不兼容。毫无疑问,这是一个小小的,但我只需要一双新眼睛来看看......

提前致谢!

1 个答案:

答案 0 :(得分:2)

这是因为您使用&lt;&gt;来表示括号的打开和关闭。

它们实际上将被用作小于和大于符号而不是打开和关闭标签。

您需要将announcements.content替换为小于和大于符号,如下所示:

...
"content": "<p>Announcement for Chad</p>",
...

编辑:查看可能的所有HTML代码的this列表。您正在使用“&lt;”的HTML代码和“&gt;”因此,不是打开和关闭标签,而是获得该角色。