web-dev-qa-db-ja.com

EJSテンプレート(JMVC)で条件ステートメントを使用できますか?

はいの場合、構文は何ですか?私の目標は、複数ある場合にWordの「コメント」の先頭に「s」を追加することです。 JMVCアプリのjQuery.ejsテンプレート。次の休憩。条件に関するドキュメントが見つかりません...

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

これにつまずく他の人のために、条件文で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
<% } %>
152
Jbird

条件が正しく構成されていれば機能します。この問題にぶつかり、それを見つけました。

条件付きの場合、elseの前のタグは、前のifの終了タグとペアにする必要があります。そうしないと、ステートメントが個別に評価され、エラーが発生します。

エラー!

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

正しい

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

これが役に立てば幸いです。

144
stanzheng

EJSは、{}表記を使用するかどうかによって異なる動作をするようです:

確認したところ、次の条件が期待どおりに評価されました。

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

これはしませんが:

<%if (3==3) %>  TEXT PRINTED  <% %>
<%if (3==4) %>  TEXT PRINTED  <% %>  
20
Kristóf Aczél

else if構文も使用できます。

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

はい、if else、三項演算子、またはswitch caseのような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;

} %>
13
Om Sharma