Могу ли я использовать условные операторы с шаблонами EJS (в JMVC)?
и если да, то какой синтаксис?
Моя цель - добавить слово 's' к слову 'comment', когда его больше одного. в шаблоне jQuery.ejs в приложении JMVC. Следующие перерывы. Я не могу найти никаких документов для условных выражений...
<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>
Ответы
Ответ 1
Для других, которые спотыкаются на это, вы также можете использовать параметры/реквизиты ejs в условных операторах:
recipes.js Файл:
app.get("/recipes", function(req, res) {
res.render("recipes.ejs", {
recipes: recipes
});
});
recipes.ejs Файл:
<%if (recipes.length > 0) { %>
// Do something with more than 1 recipe
<% } %>
Ответ 2
Условные операции работают, если они структурированы правильно, я столкнулся с этой проблемой и понял ее.
Для условных выражений тег до else
должен быть сопряжен с конечным тегом предыдущего if
, иначе инструкции будут оцениваться отдельно и создавать ошибку.
ОШИБКА!
<% if(true){ %>
<h1>foo</h1>
<% } %>
<% else{ %>
<h1>bar</h1>
<% } %>
Правильный
<% if(true){ %>
<h1>foo</h1>
<% } else{ %>
<h1>bar</h1>
<% } %>
надеюсь, что это помогло.
Ответ 3
EJS, по-видимому, ведет себя по-разному в зависимости от того, используете ли вы {} нотацию или нет:
Я проверил, и следующее условие оценивается так, как вы ожидали:
<%if (3==3) {%> TEXT PRINTED <%}%>
<%if (3==4) {%> TEXT NOT PRINTED <%}%>
в то время как этого нет:
<%if (3==3) %> TEXT PRINTED <% %>
<%if (3==4) %> TEXT PRINTED <% %>
Ответ 4
Вы также можете использовать синтаксис else if
:
<% if (x === 1) { %>
<p>Hello world!</p>
<% } else if (x === 2) { %>
<p>Hi earth!</p>
<% } else { %>
<p>Hey terra!</p>
<% } %>
Ответ 5
Да, вы можете использовать условный оператор с EJS, как если бы это было иначе, тройной оператор или даже случай переключения также
Пример
Тернарный оператор:
<%- role == 'Admin' ? 'Super Admin' : role == 'subAdmin' ? 'Sub Admin' : role %>
Корпус коммутатора
<% switch (role) {
case 'Admin' : %>
Super Admin
<% break;
case 'eventAdmin' : %>
Event Admin
<% break;
case 'subAdmin' : %>
Sub Admin
<% break;
} %>