2011-11-21 75 views
63

y si es así, ¿cuál es la sintaxis? Mi objetivo es anteponer una 's' a la palabra 'comentario' cuando hay más de uno. en una plantilla jQuery.ejs en una aplicación JMVC. Los siguientes descansos. No puedo encontrar ninguna documentación para los condicionales ...¿Puedo usar declaraciones condicionales con plantillas EJS (en JMVC)?

<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %> 
+0

Su sintaxis es correcta, y que funciona para mí. ¿Estás seguro de que var commentsNumber existe y es un número entero? – mysmallidea

+1

Sí, ¡extraño que los condicionales no se mencionan en los documentos! – UpTheCreek

Respuesta

117

Para otros que tropieza en esto, también se puede utilizar ejs params/los apoyos en las sentencias condicionales:

Archivo recipes.js:

app.get("/recipes", function(req, res) { 
    res.render("recipes.ejs", { 
     recipes: recipes 
    }); 
}); 

recipes.ejs del archivo:

<%if (recipes.length > 0) { %> 
// Do something with more than 1 recipe 
<% } %> 
+2

¿Puede usted, en el caso de una declaración 'include', escribir el en línea condicional? Eso es escribir '<% if (true) {include foo/bar}%>' parece un error. ¿Existe un método similar o es necesario dividir el 'include' por' <% %> '. – kuanb

16

EJS parece comportarse de manera diferente dependiendo de si se utiliza la notación {} o no:

He comprobado y la siguiente condición se evalúa como usted esperaría:

<%if (3==3) {%> TEXT PRINTED <%}%> 
<%if (3==4) {%> TEXT NOT PRINTED <%}%> 

mientras éste no:

<%if (3==3) %> TEXT PRINTED <% %> 
<%if (3==4) %> TEXT PRINTED <% %> 
+10

¿Esperaría que un personaje de espacio único hiciera algo? – UpTheCreek

105

condicionales funcionan si están estructurado correctamente, me encontré con este problema y lo resolvió.

Para los condicionales, la etiqueta anterior a else tiene que estar emparejada con la etiqueta final del if anterior, de lo contrario, las afirmaciones se evaluarán por separado y producirán un error.

¡ERROR!

<% if(true){ %> 
    <h1>foo</h1> 
<% } %> 
<% else{ %> 
    <h1>bar</h1> 
<% } %> 

correcta

<% if(true){ %> 
    <h1>foo</h1> 
<% } else{ %> 
    <h1>bar</h1> 
<% } %> 

esperanza que esto ayudó.

+1

¡Gracias! Esto me atascó por un tiempo. – xblymmx

+1

Esto fue increíblemente útil ya que me encontré con un problema en el que estaba poniendo mi 'else' en una línea diferente, como el primer bloque de código que mencionaste. ¡Muchas gracias por incluir estos ejemplos! –

10

También puede utilizar else if sintaxis:

<% if (x === 1) { %> 
    <p>Hello world!</p> 
<% } else if (x === 2) { %> 
    <p>Hi earth!</p> 
<% } else { %> 
    <p>Hey terra!</p> 
<% } %> 
+2

lo que necesita resaltar aquí es que el corchete de cierre tiene que ** más definitivamente ** ser utilizado en la misma línea que else/else si – Paulo

3

sí, se puede utilizar la instrucción condicional con EJS como si lo demás, operador ternario o incluso cambiar caso también

Por ejemplo

ternario operador: <%- role == 'Admin' ? 'Super Admin' : role == 'subAdmin' ? 'Sub Admin' : role %>

interruptor de la caja

<% switch (role) { 
case 'Admin' : %> 
     Super Admin 
     <% break; 

case 'eventAdmin' : %> 
     Event Admin 
     <% break; 

case 'subAdmin' : %> 
     Sub Admin 
     <% break; 

} %> 
Cuestiones relacionadas