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

Reg*_*man 87 ejs conditional-statements

如果是,语法是什么?我的目标是在有多个时,在'评论'这个词的前面添加's'.在JMVC应用程序的jQuery.ejs模板中.以下休息.我找不到条件的任何文档......

<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>
Run Code Online (Sandbox Code Playgroud)

Jbi*_*ird 158

对于偶然发现这种情况的其他人,你也可以在条件语句中使用ejs params/props:

recipes.js文件:

app.get("/recipes", function(req, res) {
    res.render("recipes.ejs", {
        recipes: recipes
    });
});
Run Code Online (Sandbox Code Playgroud)

recipes.ejs文件:

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

  • 在"include"语句的情况下,你能写出条件内联吗?那就是写`<%if(true){include foo/bar}%>`似乎出错了.是否有类似的方法或是否有必要通过`<%%>`来打破`include`. (3认同)

sta*_*eng 149

如果条件正确的结构,条件工作,我遇到了这个问题并弄明白了.

对于条件,之前的标记else必须与前一个标记的结束标记配对,if否则语句将单独评估并产生错误.

错误!

<% if(true){ %>
   <h1>foo</h1>
<% } %>
<% else{ %>
   <h1>bar</h1>
 <% } %>
Run Code Online (Sandbox Code Playgroud)

正确

<% if(true){ %>
   <h1>foo</h1>
 <% } else{ %>  
   <h1>bar</h1>
<% } %>
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.

  • 这是非常有帮助的,因为我遇到了一个问题,我把'else`放在不同的行上,就像你提到的第一个代码块一样.非常感谢包括这些例子!! (3认同)
  • 谢谢 !!这困扰了我一段时间. (2认同)

小智 21

根据您是否使用{}表示法,EJS的行为似乎有所不同:

我已经检查过,并按照您的预期评估以下条件:

<%if (3==3) {%>  TEXT PRINTED  <%}%>
<%if (3==4) {%>  TEXT NOT PRINTED  <%}%>
Run Code Online (Sandbox Code Playgroud)

虽然这个没有:

<%if (3==3) %>  TEXT PRINTED  <% %>
<%if (3==4) %>  TEXT PRINTED  <% %>  
Run Code Online (Sandbox Code Playgroud)

  • 你会期望一个空格角色做点什么吗? (11认同)

小智 16

是的,你可以使用带有EJS的条件语句,如if else,三元运算符甚至是switch case

例如

三元运营商: <%- 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;

} %>
Run Code Online (Sandbox Code Playgroud)


pzr*_*zrq 15

您还可以使用else if语法:

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

  • 你需要强调的是,结束括号必须**最明确地**与else/else在同一行中使用 (4认同)

Ach*_*uru 8

我知道这个答案有点晚了

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

<% if (something) { %>
   // Then do some operation
<% } else { %>
   // Then do some operation
<% } %>
Run Code Online (Sandbox Code Playgroud)

但还有一点我想强调的是,如果你这样使用代码,

<% if (something) { %>
   // Then do some operation
<% } %>
<% else { %>
   // Then do some operation
<% } %>
Run Code Online (Sandbox Code Playgroud)

它会产生一个错误。

希望这对某人有帮助