2013-05-28 12 views
34

テンプレートをレンダリングするためにMustacheを使用しています。Mustacheテンプレート文字列内部にHTMLとしてレンダリング

{ 
    title: "Foo bar", 
    content: "<p> Html here </p>", 
    footer: "footer content here" 
    } 

私のような口ひげのテンプレートがあります:

私はこのJSONオブジェクトを持っている

<div id="box"> 
    <div id="title"> {{title}} </div> 
    <div id="content"> {{content}} </div> 
    <div id="footer"> {{footer}} </div> 
    </div> 

私の問題は、変数コンテンツ内のHTMLをレンダリング取得されていないが、代わりにちょうどなっているということです画面に印刷されます。

私は(非表示のソースウィンドウで)<p> Html here </p>を参照してください。ページソースを表示した場合にのみ表示されます。

ひげそりテンプレートに文字列を渡すと、内部のHTMLがレンダリングされるように修正するにはどうすればよいですか?私はmustache.render(templates.all、data)を呼び出しています。口ひげへの私の呼び出しとして。 Mustache documentationから

答えて

99

すべての変数は、デフォルトではエスケープHTMLです。 のエスケープされていないHTMLを返す場合は、{{{name}}}という3つのひげを使用します。

だから、たとえば、テンプレートで{{{content}}}

<div id="box"> 
    <div id="title"> {{title}} </div> 
    <div id="content"> {{{content}}} </div> 
    <div id="footer"> {{footer}} </div> 
    </div> 
+0

私はこれは古い記事であることを知っているが、私はこの問題を解決する必要がありますが、私は割り当てる差{{{内容}}} javascriptの変数に使用するために、私のサイトの中にある他のjavascriptファイルにあります。 – cmarrero01

+0

'content'を変数として取得したい場合は、テンプレートレンダリングを呼び出すコードでそれを行います。レンダリングされたテンプレートからデータを抽出することはできません。 (テンプレートをレンダリングし、 'documents.querySelector(...)。textContent'を使用してテンプレートをレンダリングすると、ハックイシィのようになります) – sweetamylase

+0

@ cmarrero01次に{{> cnt}} 'render"関数の第3引数として変数オブジェクト '{" "cnt":content}を渡します。 ようこそhttp://jsfiddle.net/EYDfP/169/ –

関連する問題