2012-01-24 4 views
10

utilizzare underscore.js per HTML Templating, impostato per utilizzare la sintassi baffi, come questo: {{ }}Come faccio if/then in "mustache" -like underscore.js?

ho questo codice:

<% if (typeof(date) != "undefined") { %> 
    <span class="date"><%= date %></span> 
<% } %> 

Come posso tradurlo in un paio di baffi in stile underscore.js modello, usando {{ }}?

+3

È necessario prendere in lease la logica all'esterno del modello e solo renderizzare .date se typeof (data)! = "Indefinito nella visualizzazione, i modelli devono essere considerati solo come passanti. –

risposta

20

io uso:

_.templateSettings = { 
     evaluate : /\{\[([\s\S]+?)\]\}/g, 
     interpolate : /\{\{([\s\S]+?)\}\}/g 
    }; 

Allora, invece di <%= … %> uso {{ … }} invece di <% … %> utilizzare {[ … ]}

+0

perchè usato '([\ s \ S ] +?) 'invece di' (. +?) 'come nell'esempio dalla documentazione' underscore.js'? Qualsiasi motivo? – simon

+1

@simon '[\ s \ S]' è un modello di regex comune che corrisponderà a QUALSIASI Il carattere '.' nella regex non corrisponde ai caratteri di nuova riga. Il motore regex reso disponibile per JavaScript non fornisce un modo per eseguire la corrispondenza delle righe nuove' .' (come con altri motori regex). //www.regular-expressions. informazioni/dot.html –

0
{{#date}} 
<span class="date">{{date}}</span> 
{{/date}} 
+1

questo non funziona davvero per me! Template! Ma sto ancora cercando un metodo di lavoro Template all'interno !! Grazie comunque – trouble

-1

sufficiente includere questo codice dopo accodamento sottolineano

_.templateSettings = { 
    interpolate:/\{\{(.+?)\}\}/g 
}; 
+1

Già fatto! La mia domanda riguarda l'uso di if ... then ... else! Grazie – trouble