2012-01-24 10 views
10

usar underscore.js para HTML de plantillas, configurado para utilizar la sintaxis bigote, de esta manera: {{ }}¿Cómo hago si/entonces en "bigote" -like underscore.js?

tengo este código:

<% if (typeof(date) != "undefined") { %> 
    <span class="date"><%= date %></span> 
<% } %> 

¿Cómo puedo traducirlo a un estilo de bigote underscore.js plantilla, usando {{ }}?

+3

Debe alquilar la lógica fuera de la plantilla y solo renderizar .date if typeof (date)! = "Undefined en su vista, las plantillas deben tratarse como pass through only. –

Respuesta

20

que utilizo:

_.templateSettings = { 
     evaluate : /\{\[([\s\S]+?)\]\}/g, 
     interpolate : /\{\{([\s\S]+?)\}\}/g 
    }; 

Entonces, en lugar de <%= … %> uso {{ … }} y en lugar de <% … %> utilizar {[ … ]}

+0

por qué se usa '([\ s \ S ] +?) 'en lugar de' (. +?) 'como en el ejemplo de la documentación' underscore.js'? any reason? – simon

+1

@simon '[\ s \ S]' es un patrón de expresiones regulares común que coincidirá con CUALQUIER carácter. El '.' en la expresión regular no coincide con los caracteres de la nueva línea. El motor de expresiones regulares disponible para JavaScript no proporciona una manera de hacer que' .' coincida con las nuevas líneas (como lo hace con otros motores de expresiones regulares). Más información: http: //www.regular-expressions. info/dot.html –

0
{{#date}} 
<span class="date">{{date}}</span> 
{{/date}} 
+1

esto realmente no funciona para mí! TheSifter trabaja afuera ¡Plantilla! ¡Pero sigo buscando un método de trabajo dentro de Plantilla! Gracias de todos modos – trouble

-1

basta con incluir el código después de subrayar append

_.templateSettings = { 
    interpolate:/\{\{(.+?)\}\}/g 
}; 
+1

¡Ya he hecho! Mi pregunta es sobre el uso de ... si ... entonces ... más! Gracias – trouble