2012-06-23 13 views
14

Cómo configurar variables dentro de una plantilla underscore.js para una aplicación creada con backbone.js? Solo quiero crear cadenas procesadas reutilizables. Además, ¿se pueden usar las funciones integradas de underscore.js como _.escape para procesar esas variables?variables dentro de la plantilla underscore.js

<script type="text/html" id="templateresults"> 

<p><%= encodeURIComponent(title) %></p> // this works 

// try 1: 
var encodedTitle = encodeURIComponent(title); // shows up as regular text 
<p>'+encodedTitle+'</p> // this doesn't work and shows up as regular text 

// try 2: 
<% var encodedTitle = encodeURIComponent(title); %> // nothing shows up 
<p><% '+encodedTitle+' %></p> // nothing shows up 

</script> 

title es un objeto de JSON (cadena de texto).

salida codificada: This%20is%20a%20Sample%20Title
de salida regular: This is a Sample Title

Respuesta

20

Su intento 2 es casi correcta, pero la etiqueta donde encodedTitle salida está faltando el = al principio y no necesita el + en la cadena. En caso de ser:

<p><%= encodedTitle %></p> 

Como alternativa también se puede hacer:

<p><% print(encodedTitle) %></p> 

En las plantillas de subrayado, cualquier javascript que desea evaluado debe estar contenido dentro <% %>, de ahí su segundo intento simplemente da salida a la del Javascript como cuerda. Usó correctamente el = en su muestra en la parte superior, pero lo omitió en el intento 2.

El = le dice al motor de plantillas que muestre el resultado del javascript adjunto como una cadena. Si no usa =, se ejecuta el javascript, pero no se genera nada. Las plantillas de Underscore proporcionan la función print() como alternativa al uso del =, no sé si una forma es mejor que la otra.

+0

¡Dulce! Funciona. ¡Gracias! – Steve

Cuestiones relacionadas