2012-06-14 8 views
15

Come si usa un letterale "{{" in un modello di Moustache?Come si usa un letterale {{in un modello di Moustache?

Su una nota a margine, se sto usando tag personalizzati, come <% e %>, c'è un modo per scrivere "<%"?

In teoria, potrei usare tag diversi, ma ho scritto troppo codice usando {{ e }} per cambiare tutto.

risposta

36

Basta cambiare temporaneamente i delimitatori:

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

Supponendo che si stia utilizzando l'HTML, è possibile utilizzare un'entità HTML per evitarlo (il baffo non ha modo di sfuggire al tag di apertura incorporato).

Quindi per l'output {{ si scrivere &#123;{.
Per produrre <% scrivere &lt;%.

+1

E se non sto utilizzando HTML? – dbkaplun

+0

@MindVirus Come ho detto, Moustache non ha alcun modo di sfuggire al tag di apertura integrato. Ci sono tuttavia soluzioni alternative. Come cambiare il delimitatore, emettere il simbolo, e quindi cambiare il delimitatore indietro. Potrebbe esserci una soluzione migliore a seconda di cosa stai producendo, come per l'HTML. – Paulpro

3

È possibile utilizzare {{ da solo abbastanza facilmente. Se stai provando a documentare qualcosa come {{example}} puoi sempre passare le prime due bugie di parole con i tuoi dati.

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

Alcune semplici di rendering:

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

document.write(html);​ 

risultati in:

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

Ecco il full working jsFiddle

+0

C'è un modo per farlo senza passare una variabile? – dbkaplun

+0

Non si può dire a un parser di rispettare un motivo a volte, ma non sempre, quindi, le soluzioni alternative con variabili e entità HTML. – maxbeatty

0

Basta aggiungere una parentesi graffa,

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