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


101

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

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

귀하의 구문이 올바르게 보이고 저에게 효과적입니다. var commentsNumber가 존재하고 정수인지 확실합니까?
— Ryan Crispin Heneise 2011

1
예, 조건문이 문서에 언급되지 않은 것이 이상합니다!
— UpTheCreek

답변:


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 } %>가 오류로 보입니다. 방법은 비슷가 아니면 그것은 탈옥 할 필요가 include로를 <% %>.
— kuanb

감사합니다. 시도하기 전에이 답변을 찾고있었습니다.
— CTala

감사합니다! 서버의 변경 사항에서 조건부 요소를 표시하려고했습니다. 귀하의 답변은 고객의 모든 것을 평가해야한다는 것을 보여주었습니다.
— buildpax

161

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

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

오류!

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

옳은

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

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


2
감사 !! 이것은 잠시 동안 나를 붙 잡았습니다.
— xblymmx

3
이것은 else당신이 언급 한 첫 번째 코드 블록과 같은 다른 줄 에 저 를 넣는 문제에 직면했을 때 매우 유용했습니다 . 이 예제를 포함 해주셔서 감사합니다 !!
— Michael Platt

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, 삼항 연산자 또는 스위치 케이스와 같은 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 if와 같은 줄에서 가장 확실 하게 사용되어야한다는 것입니다.
— Paulo

1

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

다음과 같이 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
<% } %>

오류가 발생합니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.