2011-04-24 11 views

Respuesta

16

De acuerdo con la página web que vinculados a:

Si delimitadores de estilo ERB no son su taza de té, puede cambiar la configuración de la plantilla de Guión bajo> utilizar diferentes símbolos para hacer estallar código interpolada.

Se sugiere cambiar los interpolate y evaluate expresiones regulares. Esto significa que puede cambiar el <% =%> uso a algo que no entre en conflicto con JSP.

+1

Oh Por Dios, supongo que tenía mejor RTFM! Ahora no me siento estúpido. ;-) Gracias por la respuesta rápida ... problema resuelto. – erturne

72

Añadir la siguiente interpolar y Evaluación de la configuración en su página JSP

_.templateSettings = { 
    interpolate: /\<\@\=(.+?)\@\>/gim, 
    evaluate: /\<\@(.+?)\@\>/gim, 
    escape: /\<\@\-(.+?)\@\>/gim 
}; 

entonces usted puede escribir su calificar de relieve las variables, si y para los estados con <@ @> en lugar de <% %> y no entre en conflicto con JSP

+0

¡Esta pregunta ya fue respondida! – erturne

+26

sí, fue respondida, pero esto es para aquellos codificadores (como yo) que preferirían tener una solución de copiar y pegar :) – coderman

+0

He agregado ese bloque y he cambiado todas mis etiquetas a <@ @> y parece que no funciona. ¿Alguien puede arrojar algo de luz sobre lo que estoy haciendo mal? – jrutter

23

El ejemplo de @coderman fue útil, pero, lamentablemente, no funciona si desea usar líneas nuevas en sus plantillas. Por ejemplo:

<@ 
     var numPages = 10; 
     if (numPages > 1) { 
    @> 
    <div><@[email protected]></div> 
    <@}@> 

El problema es que la expresión regular para evaluate no coincidirá través de saltos de línea como se describe aquí: Javascript regex multiline flag doesn't work

Por lo tanto, la solución que funcionó para mí es:

_.templateSettings = { 
    interpolate: /\<\@\=(.+?)\@\>/gim, 
    evaluate: /\<\@([\s\S]+?)\@\>/gim, 
    escape: /\<\@\-(.+?)\@\>/gim 
}; 
+3

¡Gracias por esto! He estado enfrentando el mismo problema – Gediminas

5

El problema se puede resolver escapando de la secuencia <% en el código:

<script id="tmpl" type="text/x-template"> 
    <span>Hello, <\%=name%></span> 
</script> 

Así que no necesita cambiar ninguna lógica de motor de plantilla.

+0

Justo lo que necesitaba, ¡gracias! –

0

Otra opción que no requiere reemplazo global consiste en especificar la interpolación y evaluar a la invocación de métodos específicos

_.template($("#template-id").html(),null, { 
    interpolate : /\{\{\=(.+?)\}\}/g, 
    evaluate: /\{\{(.+?)\}\}/g 
});` 
Cuestiones relacionadas