backbone.js - cada bucle en la plantilla de underscore.js
each (1)
Debido a que solo ha definido una expresión regular de interpolación en su configuración de plantilla personalizada, el guión bajo no sabe cuándo evaluar expresiones. Cuando define configuraciones de plantillas personalizadas, necesita definir y diferenciar entre interpolación y evaluación. De la documentación de la template()
subrayado template()
:
Defina una expresión regular interpolada y una expresión regular (opcional) para hacer coincidir las expresiones que se deben insertar y evaluar, respectivamente. Si no se proporciona una evaluación de expresiones regulares, sus plantillas solo podrán interpolar valores.
En una plantilla estándar (sin configuraciones personalizadas), la diferencia es la evaluación: <% %>
e interpolación de valores: <%= %>
.
Entonces, por ejemplo, su plantilla de arriba debe ser (con la configuración de plantilla estándar):
<% _.each([0,1,2,3,4], function(i) { %> <p><%= i %></p> <% }); %>
Si desea continuar utilizando configuraciones personalizadas, necesitará definir una expresión regular de evaluación en _.templateSettings también. En base a sus preguntas y comentarios, algo como:
_.templateSettings = {
interpolate: //</@/=(.+?)/@/>/gim,
evaluate: //</@(.+?)/@/>/gim
};
Y luego actualice su plantilla para usar el formulario de evaluación alrededor de los bloques de código y la forma de interpolación alrededor de los valores, de esta manera:
<script type="text/template" id="pageContent">
<div class="col2">
<@ _.each([0,1,2,3,4], function(i) { @> <p><@= i @></p> <@ }); @>
</div>
</script>
fuente: http://documentcloud.github.com/underscore/#template
¡Estoy haciendo algo mal aquí pero no puedo verlo! Estoy tratando de hacer un ciclo de una matriz en una plantilla de subrayado. Aunque no funciona, me falta algo, este es mi código, mis plantillas funcionan bien; de lo contrario, son solo las cosas que están saliendo mal:
<script type="text/template" id="PageContent">
<div class="col2">
<@ _.each([0,1,2,3,4], function(i) { @> <p><@ i @></p> <@ }); @>
</div>
</script>
También hice algunas configuraciones de plantilla como esta:
_.templateSettings = {
interpolate: //</@(.+?)/@/>/gim
};