2011-11-21 60 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; 

} %> 
相關問題