2012-06-14 4 views
15

¿Cómo se usa un literal "{{" en una plantilla de bigote?¿Cómo se usa un literal {{en una plantilla de bigote?

En una nota lateral, si estoy usando etiquetas personalizadas, como <% y %>, ¿hay alguna manera de escribir "<%"?

Teóricamente, podría usar etiquetas diferentes, pero tengo demasiado código escrito usando {{ y }} para cambiarlo todo.

Respuesta

36

basta con cambiar los delimitadores de forma temporal:

{{=<% %>=}} 
{{Look at the curlies!}} 
<%={{ }}=%> 
2

Suponiendo que está imprimiendo HTML, puede usar una entidad HTML para evitarlo (el bigote no tiene forma de escapar de la etiqueta de apertura incorporada).

De modo que para la salida {{ escribiría &#123;{.
Para la salida <% escribiría &lt;%.

+1

Y si no estoy usando HTML? – dbkaplun

+0

@MindVirus Como dije, Moustache no tiene forma de escapar de la etiqueta de apertura incorporada. Sin embargo, hay soluciones. Como cambiar el delimitador, mostrar el símbolo y luego volver a cambiar el delimitador. Puede haber una solución alternativa mejor dependiendo de lo que está produciendo también, como lo hay para HTML. – Paulpro

3

Puede usar {{ por sí solo con bastante facilidad. Si está intentando documentar algo como {{example}}, siempre puede pasar los primeros dos puntos con sus datos.

orphaned curlies are easy {{ <br> 
{{curly}}example}} curlies are harder 

Algunos sencilla representación:

var data = { 'curly' : '{{'}, 
    tpl = $('#curly').html(), 
    html = Mustache.to_html(tpl, data); 

document.write(html);​ 

Resultados en:

orphaned curlies are easy {{ 
{{example}} curlies are harder 

Aquí está la full working jsFiddle

+0

¿Hay alguna forma de hacerlo sin pasar una variable? – dbkaplun

+0

No puede decirle a un analizador que respete un patrón a veces, pero no siempre, de ahí las soluciones con variables y entidades HTML. – maxbeatty

0

Sólo tiene que añadir una llave de cierre,

someTest = "<example>", {{someTest}} -> "&lt;example&gt;" {{{someTest}}} -> "<example>"

Cuestiones relacionadas