Inserisci HTML in un modello di manubrio senza escape


143

C'è un modo per inserire una stringa con tag html in un modello di manubrio senza far sfuggire i tag nella stringa in uscita?

template.js:

<p>{{content}}</p>

usa il modello

HBS.template({content: "<i>test</i> 123"})

risultato effettivo:

<p>&lt;i&gt;test&lt;/i&gt; 123</p>

Risultato atteso:

<p><i>test</i> 123</p>

Risposte:


350

Prova come

<p>{{{content}}}</p>

Ho ottenuto il riferimento ufficiale per supportare la mia risposta:

I valori di escape HTML del manubrio restituiti da a {{expression}}. Se non si desidera manubrio per sfuggire un valore, utilizzare il "triple-scorta", {{{.


27
Per una volta, qualcosa di semplice .
Madbreaks,

7
Onestamente sembra la cosa peggiore che avrebbero potuto scegliere poiché è difficile da notare. Perché non solo qualcosa di semplice ma visibile come {{ rawHtml expression }}.
danneu,

1
Sono d'accordo con @danneu. Nessuna scorciatoia magica o carina, per favore. Esplicito è meglio a lungo termine.
Matt

29

Nel tuo modello devi aggiungere tripli baffi come questo. <p>{{{content}}}</p>


11

Secondo la documentazione di Handlebars, http://handlebarsjs.com/expressions.html

Citazione dalla documentazione ,

Se non vuoi che il manubrio sfugga a un valore, usa il "triple-stash", {{{

Passa il modello HTML non elaborato al manubrio e ottieni l'output HTML non elaborato utilizzando le parentesi triple.

{{{foo}}}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.