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 템플릿에 그 기억 if
과 for
에 싸여 단지 표준 자바 스크립트 구문입니다 <% %>
태그.
답변
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><% } %>