[conditional-statements] EJS 템플릿 (JMVC)에서 조건문을 사용할 수 있습니까?

그렇다면 구문은 무엇입니까? 내 목표는 둘 이상의 댓글이있을 때 ‘댓글’이라는 단어 앞에 ‘s’를 추가하는 것입니다. JMVC 앱의 jQuery.ejs 템플릿에서. 다음 휴식. 조건부 문서를 찾을 수 없습니다 …

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



답변

이 문제를 겪는 다른 사람들을 위해 조건문에서 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
<% } %>


답변

조건문은 올바르게 구조화되어 있으면 작동합니다.이 문제에 직면하여 알아 냈습니다.

조건 문의 경우 else이전 태그는 이전 태그의 끝 태그와 쌍을 이루어야 if합니다. 그렇지 않으면 문이 별도로 평가되고 오류가 발생합니다.

오류!

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

옳은

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

이것이 도움이 되었기를 바랍니다.


답변

EJS는 {} 표기법 사용 여부에 따라 다르게 작동하는 것 같습니다.

확인한 결과 다음 조건이 예상대로 평가됩니다.

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

이것은하지 않습니다 :

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


답변

예, if else, 삼항 연산자 또는 스위치 케이스와 같은 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;

} %>


답변

else if구문 을 사용할 수도 있습니다 .

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


답변

나는 이것이 조금 늦은 대답이라는 것을 알고 있습니다.

다음과 같이 ejs에서 if 및 else 문을 사용할 수 있습니다.

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

하지만 제가 강조하고 싶은 또 다른 점은 이런 식으로 코드를 사용하면

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

오류가 발생합니다.

이것이 누군가에게 도움이되기를 바랍니다.


답변