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.