Inserte html en una plantilla de manillar sin escapar


143

¿Hay alguna manera de insertar una cadena con etiquetas html en una plantilla de manillar sin que las etiquetas escapen en la cadena saliente?

template.js:

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

usa la plantilla

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

resultado real:

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

Resultado Esperado:

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

Respuestas:


350

Intenta como

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

Obtuve la referencia oficial para respaldar mi respuesta:

Manillar Valores de escape HTML devueltos por a {{expression}}. Si no desea que los manillares para escapar de un valor, utilice la "triple escondite", {{{.


27
Por una vez, algo simple .
Madbreaks

77
Honestamente parece lo peor que podrían haber elegido, ya que es difícil de notar. ¿Por qué no simplemente algo simple pero visible como {{ rawHtml expression }}?
danneu

1
De acuerdo con @danneu. Sin magia ni taquigrafía linda, por favor. Explícito es mejor a largo plazo.
Matt

29

En su plantilla debe agregar bigotes triples como este. <p>{{{content}}}</p>


11

De acuerdo con la documentación de Handlebars, http://handlebarsjs.com/expressions.html

Cita de la documentación ,

Si no desea que los manillares escapen de un valor, use el "triple escondite", {{{

Pase el HTML sin formato a la plantilla Handlebars y obtenga el resultado HTML sin formato utilizando corchetes triples.

{{{foo}}}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.