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

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

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

Ответы [ 5 ]

149 голосов
/ 07 января 2013

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

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
<% } %>
141 голосов
/ 22 июля 2014

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

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

ОШИБКА!

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

Исправить

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

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

19 голосов
/ 09 марта 2012

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

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

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

во время этогоникто не:

<%if (3==3) %>  TEXT PRINTED  <% %>
<%if (3==4) %>  TEXT PRINTED  <% %>  
14 голосов
/ 22 марта 2016

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

<% if (x === 1) { %>
    <p>Hello world!</p>
<% } else if (x === 2) { %>
    <p>Hi earth!</p>
<% } else { %>
    <p>Hey terra!</p>
<% } %>
12 голосов
/ 14 июля 2017

Да, вы можете использовать условный оператор с 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;

} %>
...