Могу ли я использовать условные операторы с шаблонами EJS (в JMVC)?
и если да, то каков синтаксис? Моя цель состоит в том, чтобы добавить " s "К слову "комментарий", когда есть более одного. в jQuery.шаблон ejs в приложении JMVC. Следующие перерывы. Я не могу найти никаких документов для условных обозначений...
<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>
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; } %>