144 votes

Puis-je utiliser des instructions conditionnelles avec des modèles EJS (dans JMVC) ?

et si oui, quelle est la syntaxe ? Mon objectif est d'ajouter un « s » au mot « commentaire » lorsqu'il y en a plus d'un. dans un modèle jQuery.ejs dans une application JMVC. Les pauses suivantes. Je ne trouve pas de doc pour les conditionnels...

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

246voto

stanzheng Points 496

Les conditionnels fonctionnent s'ils sont correctement structurés, j'ai rencontré ce problème et je l'ai compris.

Pour les conditions, la balise avant else doit être associée à la balise de fin du if précédent, sinon les instructions seront évaluées séparément et produiront une erreur.

ERREUR!

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

Corriger

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

espérons que cela a aidé.

189voto

Jbird Points 447

Pour ceux qui trébuchent là-dessus, vous pouvez également utiliser ejs params/props dans les instructions conditionnelles :

Fichier recettes.js :

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

Fichier recettes.ejs :

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

37voto

Om Sharma Points 369

Oui, vous pouvez utiliser une instruction conditionnelle avec EJS comme if else, opérateur ternaire ou même changer de casse également

Par example

Opérateur ternaire : <%- role == 'Admin' ? 'Super Admin' : role == 'subAdmin' ? 'Sub Admin' : role %>

Commutateur Cas

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

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

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

} %>

24voto

Kristóf Aczél Points 101

EJS semble se comporter différemment selon que vous utilisez la notation { } ou non :

J'ai vérifié et la condition suivante est évaluée comme vous vous en doutez :

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

alors que celui-ci ne le fait pas :

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

22voto

pzrq Points 1

Vous pouvez également utiliser la syntaxe else if

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X