Чи можу я використовувати умовні оператори із шаблонами EJS (у JMVC)?


101

і якщо так, що таке синтаксис? Моя мета - додати слово 's' до слова 'коментар', коли їх більше. у шаблоні jQuery.ejs у додатку JMVC. Наступні перерви. Я не можу знайти жодних документів для умовних умов ...

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

Ваш синтаксис виглядає правильно, і працює для мене. Ви впевнені, що var commentsNumber існує і є цілим числом?
Райан Кріспін Генез

1
Так, дивно, що умовні умови в документах не згадуються!
UpTheCreek

Відповіді:


171

Для інших, які натрапляють на це, ви також можете використовувати ejs парами / реквізити в умовних операторах:

Файл recepti.js:

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

Файл recepti:

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

3
Чи можете ви у випадку includeзаяви написати умовний рядок? Тобто написання <% if (true) { include foo/bar } %>виявляється помилковим. Чи є спосіб , подібні або необхідно , щоб спалахнути свій includeшлях <% %>.
kuanb

Дякую, я шукав цю відповідь, перш ніж спробувати.
CTala

Дякую! Я намагався відобразити умовні елементи із змін на сервері. Ваша відповідь показала мені, що мені потрібно було оцінити все на клієнті.
buildpax

161

Умови працюють, якщо вони структуровані правильно, я зіткнувся з цим питанням і зрозумів це.

У умовному випадку тег до elseцього потрібно з'єднати з кінцевим тегом попереднього, ifінакше оператори оцінюються окремо і створюють помилку.

ПОМИЛКА!

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

Правильно

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

сподіваюся, що це допомогло.


2
Дякую !! Це застрягло мене на деякий час.
xblymmx

3
Це було надзвичайно корисно, коли я зіштовхувався з проблемою, коли я розміщував своє elseв іншому рядку, як перший код коду, який ви згадали. Дякую за включення цих прикладів !!
Майкл Платт

22

Здається, EJS поводиться по-різному залежно від того, використовуєте ви {} позначення чи ні:

Я перевірив, і наступна умова оцінюється так, як ви очікували:

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

поки цього немає:

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

11
Ви очікуєте, що один космічний персонаж щось зробить?
UpTheCreek

22

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

} %>

16

Ви також можете використовувати else ifсинтаксис:

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

4
що вам потрібно тут підкреслити, це те, що кінцевий кронштейн повинен бути остаточно використаний у тому ж рядку, що і ще / інше, якщо
Пауло

1

Я знаю, що це трохи пізня відповідь,

ви можете використовувати оператори if та else в ejs наступним чином

<% if (something) { %>
   // Then do some operation
<% } else { %>
   // Then do some operation
<% } %>

Але є ще одне, що я хочу наголосити, що якщо ви використовуєте код таким чином,

<% if (something) { %>
   // Then do some operation
<% } %>
<% else { %>
   // Then do some operation
<% } %>

Це призведе до помилки.

Сподіваюсь, це комусь допоможе

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.