2010-12-10 8 views
9

Estoy trabajando con mustache.js por primera vez. Todos los ejemplos que encuentro parecen referirse a poner todo en línea, pero quiero que mis plantillas estén en archivos externos para que puedan usarse en varios lugares. ¿Cómo puedo hacer eso? (. Tengo jQuery en mi pila, si eso hace la diferencia)¿Cómo obtengo mi archivo de plantilla mustache.js incluido?

Así que decir que tengo:

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> 

Respuesta

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

Cuando la plantilla está en el 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> 

También puede hacer que varias plantillas directamente en su página ...

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

Oh, si su página entera era la plantilla que pudiera probablemente use $ ('body'). val(); – DaveN

+1

¡Pero la plantilla está en un archivo externo! ese es todo el punto. Creo que podría hacer una llamada a Ajax para obtenerla, pero me pregunto si hay una mejor manera ... – sprugman

+2

Ah, sí, sí, me gustaría obtener AJAX para obtenerlo y onSuccess asignar la respuesta a la plantilla var. – DaveN

Cuestiones relacionadas