Wie machen die Jade stop-HTML-Codierung element-Attribute und erzeugen ein literaler string-Wert?
UPDATE Jade v0.24.0 behebt dies mit einem !=
syntax für Attribute. option(value!='<%= id %>')
Ich versuche zu bauen, ein <option>
mit jade, wo der Wert der option ist eine UnderscoreJS template-marker: <%= id %>
aber ich kann nicht ankommen es zu wirken, denn jade ist die Konvertierung meiner markentext <= id >
.
Hier mein Jade-markup:
script(id="my-template", type="text/template")
select(id="type")
<% _.each(deviceTypes, function(type){ %>
option(value='<%= type.id %>') <%= type.name %>
<% }) %>
Ich erwarte, dass es zu produzieren diese html:
<script id="my-template" type="text/template">
<select id='type'>
<% _.each(deviceTypes, function(type){ %>
<option value="<%= type.id %>"> <%= type.name %> </option>
<% }) %>
</select>
</script>
Aber was ich stattdessen bekommen, ist diese:
<script id="my-template" type="text/template">
<select id='type'>
<% _.each(deviceTypes, function(type){ %>
<option value="<%= type.id %>"> <%= type.name %> </option>
<% }) %>
</select>
</script>
Beachten Sie den feinen Unterschied in der <option>
Zeile der Ausgabe... der value
- Attribut des option-HTML-codiert.
Wie kann ich verhindern, dass Jade von HTML-Kodierung dieser Wert? Ich brauche es zum herstellen der Literale Wert, die gleiche Weise mit dem text der option.
InformationsquelleAutor der Frage Derick Bailey | 2012-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies Schreibe, glaube ich nicht, es ist ein Weg, um es. Siehe dieses Thema:
https://github.com/visionmedia/jade/issues/198
Landete ich fallen in raw HTML, um es zu lösen, mit dem | Präfix.
InformationsquelleAutor der Antwort Kevin Dente
Derick hat schon gesagt, dass Jade neue Funktion Hinzugefügt, für unescape HTML-Codierung, in der Aktualisierung, aber ich möchte noch hinzufügen, einige Ergänzung für jemanden, der möglicherweise nicht erkennen.
vom https://github.com/visionmedia/jade
InformationsquelleAutor der Antwort Minime
Diese Funktion wurde Hinzugefügt Jade. Verwenden Sie einfach die
!=
operator, wenn Sie wollen, unescape Attribut-Werte:InformationsquelleAutor der Antwort Mike M. Lin
Also ich hatte ein Problem ähnlich wie diese, wo ich wollte einen Unterstrich Vorlage in einen meiner Jade Ansichten. Ein Stück der Unterstrich Vorlage brauchte, um die
selected
Attribut in einem<option>
tag.Zunächst habe ich versucht, mit Unterstrich return "ausgewählt" oder "". Leider Jade muss nicht ein Weg, um ein Attribut ohne Wert und nicht von nicht-escaping-Attribut-Namen (der Unterstrich bits waren auf dem Rückweg ohne Anführungszeichen).
Zum Glück, Sie sind in der Lage, unescape die Wert eines Attributs, die Erhaltung der Anführungszeichen.
In diesem Beispiel habe ich die Auswahl eines Wertes einer dropdown-Box auf der Basis der Eigentümer-Typ ein passender string-Wert. Ich eine helper-Funktion, damit ich nicht haben, um manuell zu entkommen Anführungszeichen.
Laut einigen, Sie sollten in der Lage sein zu verwenden
!{}
hier vollständig zu vermeiden-Codierung (<, >, etc.
), jedoch funktionierte dies nicht auf meine version von Jade. Ich bin mit"^0.30"
und die aktuelle version ist1.x
.Wenn jemand verifizieren kann, dass
!{}
funktioniert in dieser situation mit der aktuellen version von Jade, werde ich update meine Antwort.InformationsquelleAutor der Antwort Dropped.on.Caprica