Могу ли я использовать условные операторы с шаблонами EJS (в JMVC)?


и если да, то каков синтаксис? Моя цель состоит в том, чтобы добавить " s "К слову "комментарий", когда есть более одного. в jQuery.шаблон ejs в приложении JMVC. Следующие перерывы. Я не могу найти никаких документов для условных обозначений...

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

5 ответов:

для других, которые натыкаются на это, вы также можете использовать EJS params / props в условных операторах:

рецепты.js File:

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

рецепты.EJS файл:

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

условные обозначения работают, если они правильно структурированы, я столкнулся с этой проблемой и понял это.

для условных обозначений, тег перед else должен быть сопряжен с конечным тегом в противном случае операторы будут оцениваться отдельно и выдавать ошибку.

ошибка!

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

правильно

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

надеюсь, что это помогло.

EJS, похоже, ведет себя по-разному в зависимости от того, используете ли вы {} нотацию или нет:

Я проверил и следующее условие оценивается, как и следовало ожидать:

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

в то время как этот не делает:

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

вы также можете использовать else if синтаксис:

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

Да, вы можете использовать условный оператор с EJS, как если бы еще, тернарный оператор или даже случай переключения также

тернарный оператор : <%- role == 'Admin' ? 'Super Admin' : role == 'subAdmin' ? 'Sub Admin' : role %>

Переключатель Case

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

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

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

} %>