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


101

はいの場合、構文は何ですか?私の目標は、「コメント」という単語の前に「s」を付けることです。JMVCアプリのjQuery.ejsテンプレート。次の改行。条件文のドキュメントが見つかりません...

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

あなたの構文は正しく見え、私にとってはうまくいきます。var commentsNumberが存在し、整数であることを確認しますか?
Ryan Crispin Heneise

1
はい、条件文がドキュメントに記載されていないのは奇妙です!
UpTheCreek 2013年

回答:


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 2016

ありがとう、私はそれを試す前にこの答えを探していました。
CTala 2018

ありがとうございました!サーバーでの変更からの条件付き要素を表示しようとしました。あなたの答えは、私がクライアント上のすべてを評価する必要があることを示しました。
buildpax

161

条件文は、正しく構成されていれば機能します。この問題に遭遇し、それを理解しました。

条件文の場合、else前のタグは前のタグifと組み合わせる必要があります。そうでない場合、ステートメントは個別に評価され、エラーが発生します。

エラー!

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

正しい

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

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


2
ありがとう!! これはしばらく私を悩ませました。
xblymmx 2016

3
elseあなたが言及した最初のコードブロックのような別の行に私を入れていた問題に遭遇していたので、これは信じられないほど役に立ちました。これらの例を含めてくれてありがとう!
マイケルプラット2017

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 2013年

22

はい、if else、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;

} %>

16

else if構文を使用することもできます。

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

4
ここで強調する必要があるのは、閉じ括弧がelse / elseと同じ行で最も明確に使用されなければならないということです
Paulo

1

私はこれが少し遅い答えであることを知っています、

次のようにejsでifとelseステートメントを使用できます

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

しかし、もう1つ強調したいことがあります。この方法でコードを使用すると、

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

エラーになります。

これが誰かに役立つことを願っています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.