2010-12-10 12 views
9

Sto lavorando con mustache.js per la prima volta. Tutti gli esempi che trovo sembrano parlare di mettere tutto in linea, ma voglio i miei modelli in file esterni in modo che possano essere utilizzati in più posti. Come lo faccio? (. Ho jQuery nel mio stack, se questo fa la differenza)come faccio ad avere il mio file modello mustache.js incluso?

Quindi dire che ho:

template.html

{{title}} spends {{calc}} 

data.js

var data = { title: "Joe", calc: function() { return 2 + 4; } }; 

index.html

<script type="text/javascript" src="data.js"></script> 

<div id="target"></div> 

<script type="text/javascript"> 
    var template = ?????? // how do I attach the template? 
    var html = Mustache().to_html(template, data); 
    $('#target')[0].innerHTML = html; 
</script> 

risposta

1
template = $('.template').val(); 

Dove il modello è nel DOM ...

<textarea class="template"> 
<h1>{{header}}</h1> 
{{#bug}} 
{{/bug}} 

{{#items}} 
    {{#first}} 
    <li><strong>{{name}}</strong></li> 
    {{/first}} 
    {{#link}} 
    <li><a href="{{url}}">{{name}}</a></li> 
    {{/link}} 
{{/items}} 

{{#empty}} 
    <p>The list is empty.</p> 
{{/empty}} 
</textarea> 

Si potrebbe anche rendere più modelli direttamente nella tua pagina ...

<script id="yourTemplate" type="text/x-jquery-tmpl"> 
    {{tmpl "#yourTemplate"}} 
    <div>Something: ${TemplateValue}</div> 
</script> 
+0

Oh, se l'intera pagina è stata il modello che si potrebbe probabilmente usa $ ('body'). val(); – DaveN

+1

Ma il modello è in un file esterno! questo è il punto. Immagino di poter fare una chiamata ajax per ottenerlo, ma mi chiedo se c'è un modo migliore .... – sprugman

+2

Ah ok, sì, mi piacerebbe AJAX per farlo e onSuccess assegnare la risposta al modello var. – DaveN

Problemi correlati