2010-12-10 21 views
9

Je travaille avec moustache.js pour la première fois. Tous les exemples que je trouve semblent parler de tout mettre en ligne, mais je veux mes modèles dans des fichiers externes afin qu'ils puissent être utilisés à plusieurs endroits. Comment je fais ça? (. J'ai jQuery dans ma pile, si cela fait une différence)Comment puis-je obtenir mon fichier de modèle moustache.js inclus?

dire J'ai:

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> 

Répondre

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

Si votre modèle est dans les 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> 

Vous pouvez également rendre plusieurs modèles directement dans votre page ...

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

Oh, si votre page entière était le modèle que vous pourriez utilise probablement $ ('body'). val(); – DaveN

+1

Mais le modèle est dans un fichier externe! exactement. Je suppose que je pourrais faire un appel ajax pour l'obtenir, mais je me demande s'il y a un meilleur moyen .... – sprugman

+2

Ah ok, oui, je serais AJAX pour l'obtenir et onSuccess assigner la réponse au modèle var. – DaveN