24

サーバーから取得したデータをレンダリングするために、構築中のアプリで Handlebars テンプレート エンジンを使用しています。

デフォルトで HTML 値をエスケープし、HTML 要素としてレンダリング{{{text}}}するには三重括弧を使用する必要があることを知っています。text: <p>Example</p>

問題は、受け取ったデータ (HTML タグを含む) が既にエスケープされている場合はどうすればよいかということです。

したがって、次のようなデータを受け取った場合:

text: &lt;p&gt;Example&lt;/p&gt;

ハンドルバーを強制的に変換して通常の HTML としてレンダリングするにはどうすればよいですか?

4

2 に答える 2

40

最初にデコードしてから、トリプル ブラケットを使用してハンドルバーに渡す必要があります。jQueryでhtmlエンティティをデコードするための小さなヒントを知っています:

// encoded is "&lt;p&gt;Example&lt;/p&gt" in your example
var decoded = $('<textarea />').html(encoded).val();
// decoded should now return <p>Example</p>
于 2012-05-18T14:18:47.730 に答える
10

Handlebars はヘルパーを提供し、 Handlebars_helpers.jsの下に次のようなカスタム ヘルパーを記述します。

Handlebars.registerHelper('encodeMyString',function(inputData){
    return new Handlebars.SafeString(inputData);
});

.handlebar次のように、ファイルまたは.hbsファイルでこのヘルパーを使用します

{{encodeMyString myHTMLData}}

Jquery の助けがなければ、ハンドルバー内のどこでも使用できます。ヘルパーを使用してデータを単独で渡すこともできます。これは、先頭および末尾にタグを付けてデータを返します。

于 2016-11-29T19:10:23.477 に答える