Ignorieren Undefinierte Daten / vars mit einem Unterstrich Vorlage
Immer noch lernen, Rückgrat, so mit mir tragen;
Ich versuche zu hinzufügen eines neuen Modells mit leeren Feldern zu einer Ansicht, aber die Vorlage habe ich erstellt, hat eine ganze Reihe von
<input value="<%= some_value %>" type="whatever" />
Funktioniert völlig in Ordnung, wenn das abrufen von Daten, füllt es und alles geht gut. Das Problem entsteht, wenn ich will erstellen Sie eine neue (leere) gerenderten Ansicht, es gibt mir
Uncaught ReferenceError: some_value is not defined
Kann ich defaults
(ich weiß schon für ein paar, die haben default-Werte in der db), aber das bedeutet, dass die Eingabe, über 40 von Ihnen mit Leerzeichen aufgefüllt; ist es eine bessere Art des Umgangs mit diesen?
Ich bin hantieren mit der Unterstrich-Vorlage selbst zu versuchen so etwas wie <%= if(some_value != undefined){ some_value } %>
aber das scheint auch ein bisschen umständlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein,
Gibt es keine eigentliche fix für diese aufgrund der Art und Weise Unterstrich Vorlagen umgesetzt werden.
Sehen diese Diskussion darüber:
Nur so können Sie erreichen, was Sie suchen, ist entweder wickeln Sie das Objekt mit einem anderen Objekt wie der anderen Antwort vorgeschlagen, oder bei der Einrichtung von Standardwerten.
Pass die Vorlage von Daten in einem wrapper-Objekt. Fehlende Eigenschaft Zugriff wird nicht werfen eine Fehlermeldung:
Statt:
Versuchen:
Tatsächlich, Sie können
arguments
im inneren Ihrer Vorlage:Wenn Sie das Kontrollkästchen source-code für template-Funktion generiert wird, sehen Sie etwas wie dies:
Was hier passiert: bei der ersten JS versucht zu finden, Ihre Immobilie in "obj", die das Modell (mehr über mit - Anweisung). Diese Eigenschaft ist nicht in "obj" Bereich, also JS Traversen bis und bis bis Globale Reichweite und schließlich wirft Ausnahme.
So, Sie können Ihre Rahmen direkt um das zu beheben:
Zumindest es funktionierte für mich.
Tatsächlich ist, können Sie auf vars wie erste Objekt-Eigenschaften.
Wenn Sie aktivieren debugger in die Vorlage sind, finden Sie die variable "obj", die enthält alle Ihre Daten.
Also statt
<%= title %>
Sie schreiben sollte<%= obj.title %>
lodash, underscore Ersatz, bietet eine Vorlage - Funktion mit einer eingebauten Lösung. Es hat eine option, um wickeln Sie die Daten in einem anderen Objekt zu vermeiden, die "mit" - Anweisung, die den Fehler verursacht.
Beispiel für die Verwendung der API-Dokumentation:
Eine sehr einfache Lösung: Sie können sicherstellen, dass Ihre Daten-Sammlung ist normalisiert, d.h., dass alle Eigenschaften vorhanden sind, in jedes Objekt (mit einem null-Wert, wenn Sie nicht verwendet werden). Eine Funktion wie diese können helfen:
(Hinweis:
_.zipObject
und_.fill
sind in den letzten Versionen von lodash, aber nicht den Unterstrich)Verwenden Sie es wie diese:
Natürlich, werden Sie nicht haben, um wandeln Sie Ihre Daten permanent – nur zum aufrufen der Funktion on-the-fly, wie Sie Ihre Vorlage-rendering-Funktion:
Können Sie abstrakte @Dmitri Antwort weiter, indem Sie hinzufügen einer Funktion zu Ihrem Modell und verwenden Sie es in Ihrer Vorlage.
Beispiel:
Modell :
Vorlage:
Als Kommentar in seiner Antwort schon sagt, ist dieses mehr erweiterbar.