Ich verwende die Vorlagenfunktion underscore.js und habe eine Vorlage wie die folgende erstellt:
<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>
Wie Sie sehen, habe ich dort eine if-Anweisung, da nicht alle meine Modelle den Datumsparameter haben. Diese Vorgehensweise gibt mir jedoch einen Fehler date is not defined
. Wie kann ich also Anweisungen in einer Vorlage ausführen?
:nth-child(even)
und:nth-child(odd)
Ihre Vorlage nicht ändern.Wenn Sie eine kürzere if else-Anweisung bevorzugen, können Sie diese Kurzform verwenden:
Dies bedeutet, dass die ID angezeigt wird, wenn sie gültig ist, und leer, wenn dies nicht der Fall ist.
quelle
_.template
ein;
am Anfang jedes kompilierten Code-Tags ein. Somit kann es Tags verarbeiten, die zwischen Anweisungen brechen, jedoch nicht innerhalb von Ausdrücken. Vergleiche;if(a){b;}else{c;}
mit;a?b;:c;
.Abhängig von der Situation und / oder Ihrem Stil möchten Sie möglicherweise auch Drucken in Ihren
<%
%>
Tags verwenden, da dies eine direkte Ausgabe ermöglicht. Mögen:Und für das Original-Snippet mit etwas Verkettung:
quelle
Hier ist eine einfache if / else-Prüfung in underscore.js, wenn Sie eine Nullprüfung einschließen müssen.
quelle
_.isEmpty()
Als Sie oben auf blackdivine geantwortet haben (wie man die Ergebnisse streift), haben Sie möglicherweise bereits Ihre Antwort gefunden (wenn ja, schämen Sie sich dafür, dass Sie nicht teilen!), Aber der einfachste Weg, dies zu tun, ist die Verwendung des Modul-Operators. Angenommen, Sie arbeiten in einer for-Schleife:
Überprüfen Sie innerhalb dieser Schleife einfach den Wert Ihres Index (in meinem Fall i):
Dadurch wird der Rest meines Index durch zwei geteilt (zwischen 1 und 0 für jede Indexzeile umgeschaltet).
quelle
Sie können _.isUndefined ausprobieren
quelle
date
löst weiterhin eine Ausnahme aus, wenn er überhaupt nicht vorhanden ist.typeof
In diesem Fall brauchen Sie das wirklich , obwohl es noch besser wäre, eine benannte Variable zu verwenden, wenn wir Vorlagendaten vom Typ Ente eingeben.Von hier aus :
"Sie können auch über dieses Objekt auf die Eigenschaften des Datenobjekts verweisen, anstatt als Variablen darauf zuzugreifen." Dies bedeutet, dass dies für den Fall von OP funktioniert (mit einer wesentlich geringeren Änderung als bei anderen möglichen Lösungen):
quelle
Um nach Nullwerten zu suchen, können Sie diese
_.isNull
aus der offiziellen Dokumentation verwendenGibt true zurück, wenn der Wert des Objekts null ist.
quelle