[javascript] underscore.js 템플릿에서 if 문을 사용하는 방법은 무엇입니까?

underscore.js 템플릿 기능을 사용하고 있으며 다음과 같은 템플릿을 수행했습니다.

<script type="text/template" id="gridItem">
    <div class="griditem <%= gridType %> <%= gridSize %>">
        <img src="<%= image %>" />
        <div class="content">
            <span class="subheading"><%= categoryName %></span>
            <% if (date) { %><span class="date"><%= date %></span><% }  %>
            <h2><%= title %></h2>
        </div>
    </div>
</script>

보시다시피 모든 모델에 날짜 매개 변수가 없으므로 if 문이 있습니다. 그러나 이렇게하면 오류가 발생 date is not defined합니다. 그렇다면 템플릿 내에서 if 문을 어떻게 수행 할 수 있습니까?



답변

트릭을 수행해야합니다.

<% if (typeof(date) !== "undefined") { %>
    <span class="date"><%= date %></span>
<% } %>

underscore.js 템플릿에 그 기억 iffor에 싸여 단지 표준 자바 스크립트 구문입니다 <% %>태그.


답변

else if 서술문을 선호하는 경우이 속기를 사용할 수 있습니다.

<%= typeof(id)!== 'undefined' ?  id : '' %>

유효하면 ID를 표시하고 유효하지 않은 경우 비어 있습니다.


답변

상황 및 스타일에 따라 직접 출력 할 수 있으므로 태그 내부에서 인쇄를 사용하고 싶을 수도 있습니다 <% %>. 처럼:

<% if (typeof(id) != "undefined") {
     print(id);
}
else {
    print('new Model');
} %>

그리고 일부 연결이있는 원본 스 니펫의 경우 :

<% if (typeof(date) != "undefined") {
    print('<span class="date">' + date + '</span>');
} %>


답변

null 검사를 포함 해야하는 경우 underscore.js의 간단한 if / else 검사가 있습니다.

<div class="editor-label">
    <label>First Name : </label>
</div>
<div class="editor-field">
    <% if(FirstName == null) { %>
        <input type="text" id="txtFirstName" value="" />
    <% } else { %>
        <input type="text" id="txtFirstName" value="<%=FirstName%>" />
    <% } %>
</div>


답변

위의 blackdivine에 응답하여 (결과를 스트라이프하는 방법에 대해) 이미 답변을 찾았을 수 있지만 (그렇다면 공유하지 않는 것이 부끄러운 일입니다!), 가장 쉬운 방법은 모듈러스 연산자를 사용하는 것입니다. 예를 들어 for 루프에서 작업하고 있다고 가정 해보십시오.

<% for(i=0, l=myLongArray.length; i<l; ++i) { %>
...
<% } %>

해당 루프 내에서 색인 값을 확인하십시오 (i의 경우).

<% if(i%2) { %>class="odd"<% } else { %>class="even" <% }%>

이렇게하면 나머지 인덱스를 2로 나눈 값을 확인할 수 있습니다 (각 인덱스 행에 대해 1과 0 사이를 전환합니다).


답변

_.isUndefined 를 사용해보십시오 .

<% if (!_.isUndefined(date)) { %><span class="date"><%= date %></span><% } %>


답변

에서 여기 :

“변수로 액세스하는 대신 해당 객체를 통해 데이터 객체의 속성을 참조 할 수도 있습니다.” OP의 경우 이것이 가능하다는 것을 의미합니다 (다른 가능한 솔루션보다 훨씬 작은 변경으로).

<% if (obj.date) { %><span class="date"><%= date %></span><% }  %>