Czy Mogę używać instrukcji warunkowych z szablonami EJS (w jmvc)?

A jeśli tak, to jaka jest składnia? Moim celem jest przygotowanie " s "do słowa "komentarz", gdy jest więcej niż jeden. w jQuery.szablon ejs w aplikacji JMVC. Kolejne przerwy. Nie mogę znaleźć żadnych dokumentów...

<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>
Author: Regis Zaleman, 2011-11-21

5 answers

Dla innych, którzy się na to natkną, możesz również użyć ejs params / props w instrukcjach warunkowych:

Przepisy.plik js:

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

Przepisy.plik ejs:

<%if (recipes.length > 0) { %>
// Do something with more than 1 recipe
<% } %>
 129
Author: Jbird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-07 17:37:49

Warunki działają, jeśli są prawidłowo skonstruowane, wpadłem na ten problem i rozgryzłem go.

Dla warunkow, znacznik przed else musi być sparowany ze znacznikiem końcowym poprzedniego if w przeciwnym razie instrukcje będą oceniać oddzielnie i generować błąd.

Błąd!
<% if(true){ %>
   <h1>foo</h1>
<% } %>
<% else{ %>
   <h1>bar</h1>
 <% } %>

Poprawne

<% if(true){ %>
   <h1>foo</h1>
 <% } else{ %>  
   <h1>bar</h1>
<% } %>
Mam nadzieję, że to pomogło.
 117
Author: stanzheng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-03 21:48:26

EJS wydaje się zachowywać inaczej w zależności od tego, czy używasz {} notacji, czy nie:

Sprawdziłem i następujący warunek jest oceniany zgodnie z oczekiwaniami:

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

Podczas gdy ten nie:

<%if (3==3) %>  TEXT PRINTED  <% %>
<%if (3==4) %>  TEXT PRINTED  <% %>  
 16
Author: Kristóf Aczél,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-09 13:04:02

Można również użyć składni else if:

<% if (x === 1) { %>
    <p>Hello world!</p>
<% } else if (x === 2) { %>
    <p>Hi earth!</p>
<% } else { %>
    <p>Hey terra!</p>
<% } %>
 11
Author: pzrq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-22 05:07:56

Tak, możesz używać instrukcji warunkowej z EJS, jak if else, operatora trójdzielnego lub nawet Przełącz również case

Na Przykład

Operator trójdzielny : <%- role == 'Admin' ? 'Super Admin' : role == 'subAdmin' ? 'Sub Admin' : role %>

Switch Case

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

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

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

} %>
 7
Author: Om Sharma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-14 10:11:35