Korzystam z funkcji szablonowania underscore.js i zrobiłem szablon taki jak ten:
<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>
Jak widać, mam tam instrukcję if, ponieważ wszystkie moje modele nie będą miały parametru date. Jednak ten sposób zrobienia tego powoduje błąd date is not defined
. Jak mogę zrobić, jeśli instrukcje w szablonie?
:nth-child(even)
i:nth-child(odd)
selektorów CSS, nie zmienić szablon.Jeśli wolisz krótszą instrukcję if, możesz użyć tego skrótu:
Oznacza to wyświetlenie identyfikatora, jeśli jest poprawny, i puste, jeśli nie było.
źródło
_.template
wstawia;
na początku każdego skompilowanego znacznika kodu. W związku z tym może obsługiwać tagi rozbijające się między instrukcjami, ale nie wewnątrz wyrażeń. Porównaj;if(a){b;}else{c;}
z;a?b;:c;
.W zależności od sytuacji i / lub stylu możesz także chcieć użyć nadruku wewnątrz
<%
%>
tagów, ponieważ pozwala to na bezpośredni wydruk. Lubić:A dla oryginalnego fragmentu z pewną konkatenacją:
źródło
Oto proste sprawdzenie if / else w underscore.js, jeśli musisz dołączyć czek zerowy.
źródło
_.isEmpty()
Odpowiadając na powyższe blackdivine (o tym, jak rozłożyć wyniki), być może już znalazłeś swoją odpowiedź (jeśli tak, wstydź się, że nie udostępniasz!), Ale najłatwiej to zrobić, używając operatora modułu. powiedzmy na przykład, że pracujesz w pętli for:
W tej pętli po prostu sprawdź wartość swojego indeksu (w moim przypadku i):
Spowoduje to sprawdzenie reszty mojego indeksu podzielonego przez dwa (przełączanie między 1 a 0 dla każdego wiersza indeksu).
źródło
Możesz spróbować _.isUndefined
źródło
date
ogóle nie istnieje. Naprawdę potrzebujesz tegotypeof
w tym przypadku, chociaż lepiej byłoby użyć nazwanej zmiennej, gdy będziemy pisać dane szablonu.Od tutaj :
„Możesz również odwoływać się do właściwości obiektu danych za pośrednictwem tego obiektu, zamiast uzyskiwać do nich dostęp jako zmienne.” Oznacza to, że w przypadku PO będzie to działać (ze znacznie mniejszą zmianą niż w przypadku innych możliwych rozwiązań):
źródło
Aby sprawdzić, czy wartości null można skorzystać
_.isNull
z oficjalnej dokumentacjiZwraca wartość true, jeśli wartość obiektu jest równa null.
źródło