2011-11-21 27 views
63

如果是的话,语法是什么? 我的目标是在“多个评论”这个词的前面加上's'。在JMVC应用程序的jQuery.ejs模板中。以下休息。我找不到任何文档的条件语句...我可以使用条件语句和EJS模板(在JMVC中)吗?

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

你的语法看起来正确的,对我的作品。你确定var commentsNumber存在并且是一个整数吗? – mysmallidea

+1

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

回答

117

对于其他人绊倒在此,您还可以使用EJS PARAMS /道具在条件语句:

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 
<% } %> 
+2

您可以在include语句的情况下写入条件内联?这就是写'<%if(true){include foo/bar}%>'出现错误。有没有类似的方法或是否有必要通过'<% %>'来打破'include'。 – kuanb

16

EJS似乎表现不同,这取决于您是否使用{}符号与否:

我已经确认并以下条件被评估为你期望:

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

而这一次没有:

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

你会期待一个单一的空间角色做点什么吗? – UpTheCreek

105

工作条件句结构正确,我遇到了这个问题,并找出答案。

对于条件,else之前的标签必须与之前的if的结束标签配对,否则这些语句将单独评估并产生错误。

错误!

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

正确

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

希望这有助于。

+1

谢谢!这让我陷入了一段时间。 – xblymmx

+1

这是非常有用的,因为我遇到了一个问题,我把我的'else'放在不同的行上,就像你提到的第一个代码块。非常感谢包含这些例子! –

10

您还可以使用else if语法:

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

你需要在这里强调的是,右括号必须**最明确地**用于与else/else相同的行if – Paulo

3

是的,你可以使用条件语句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; 

} %> 
相关问题