0

JSONで提供されたHTMLを解析しないAngularで少し奇妙な時間を過ごしています。JSON から文字列を取得してページに出力する ng-bind-html-unsafe ディレクティブを使用していますが、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
    }
  ]
}

何が起こっているかというと、エンコードされた文字がページに生成されているということです。実際の段落タグとして出力するためにブラウザによって解析されていないだけです。例えば。2 番目のアナウンスは次のようにページに出力されています。

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

ng-bind-html ディレクティブも使用してみましたが、サニタイズ依存関係が設定されていますが、どちらでも機能しません。間違いなく小さなものですが、見るには新鮮な目が必要です...

前もって感謝します!

4

1 に答える 1

2

これは、括弧の開始と終了を表すために &lt;andを使用しているためです。&gt;

これらは、開始タグと終了タグの代わりに、文字通り小なりおよび大なり記号として使用されます。

announcements.content次のように、 を小なり記号と大なり記号に置き換える必要があります。

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

編集:可能なすべての HTML コードのこのリストを参照してください。「<」と「>」の HTML コードを使用しているため、タグを開いたり閉じたりする代わりに、その文字を取得します。

于 2013-06-21T05:22:35.090 に答える