我可以在EJS模板(在JMVC中)中使用条件语句吗?


101

如果是,语法是什么?我的目标是,如果有多个注释,则在“注释”前加一个“ s”。在JMVC应用程序的jQuery.ejs模板中。以下休息。我找不到条件文档...

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

您的语法看起来正确,并且对我有用。您确定var commentsNumber存在并且是整数吗?
Ryan Crispin Heneise 2011年

1
是的,很奇怪文档中没有提到条件!
UpTheCreek

Answers:


171

对于其他偶然发现的情况,您也可以在条件语句中使用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
<% } %>

3
include语句而言,您可以编写条件内联吗?那是写<% if (true) { include foo/bar } %>似乎错误。是否有类似的方法或是否有必要突破includeby <% %>
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 16/12/30

3
当我遇到一个问题时,这非常有用,因为我将我else放在另一行,例如您提到的第一个代码块。非常感谢您提供这些示例!!
Michael Platt

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一起使用,例如else,三元运算符甚至切换大小写

例如

三元运算符<%- 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
您需要在此处强调的是,如果
Paulo

1

我知道这是一个较晚的答案,

您可以在ejs中使用if和else语句,如下所示

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

但是我要强调的另一件事是,如果您以这种方式使用代码,

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

它将产生一个错误。

希望这对某人有帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.