2012-06-14 8 views
15

Wie benutzt man ein Literal "{{" in einer Moustache-Vorlage?Wie benutzt man ein Literal {{in einer Moustache-Vorlage?

Eine Randnotiz, wenn ich benutzerdefinierte Tags wie <% und %> verwende, gibt es eine Möglichkeit, "<%" zu schreiben?

Theoretisch könnte ich verschiedene Tags verwenden, aber ich habe zu viel Code geschrieben mit {{ und }}, um alles zu ändern.

Antwort

36

Nur die Begrenzer vorübergehend ändern:

{{=<% %>=}} 
{{Look at the curlies!}} 
<%={{ }}=%> 
2

Angenommen, Sie geben HTML aus, könnten Sie eine HTML-Entität verwenden, um dies zu vermeiden (der Schnurrbart hat keine Möglichkeit, dem eingebauten Eröffnungs-Tag zu entkommen).

So, um {{ auszugeben, würden Sie &#123;{ schreiben.
Zur Ausgabe <% würden Sie &lt;% schreiben.

+1

Und wenn ich mit HTML nicht? – dbkaplun

+0

@MindVirus Wie ich schon sagte Moustache hat keine Möglichkeit, dem Eröffnungs-Tag zu entkommen. Es gibt jedoch Workarounds. Wie zum Beispiel das Ändern des Begrenzers, das Ausgeben des Symbols und dann das Zurücksetzen des Begrenzers. Je nachdem, was Sie ausgeben, gibt es möglicherweise eine bessere Problemumgehung, wie es für HTML der Fall ist. – Paulpro

3

Sie können {{ an sich ganz einfach verwenden. Wenn Sie versuchen, etwas wie {{example}} zu dokumentieren, könnten Sie immer die ersten beiden Zeilen mit Ihren Daten übergeben.

orphaned curlies are easy {{ <br> 
{{curly}}example}} curlies are harder 

Einige einfache Rendering:

var data = { 'curly' : '{{'}, 
    tpl = $('#curly').html(), 
    html = Mustache.to_html(tpl, data); 

document.write(html);​ 

Ergebnisse in:

orphaned curlies are easy {{ 
{{example}} curlies are harder 

Hier ist der full working jsFiddle

+0

Gibt es eine Möglichkeit, dies zu tun, ohne eine Variable zu übergeben? – dbkaplun

+0

Sie können einem Parser nicht sagen, dass er ein Muster respektieren soll, aber nicht immer die Problemumgehungen mit Variablen und HTML-Entitäten. – maxbeatty

0

Fügen Sie einfach eine geschweifte Klammer,

someTest = "<example>", {{someTest}} -> "&lt;example&gt;" {{{someTest}}} -> "<example>"