2010-09-12 4 views
1

Utilisation jTemplates, il est possible de modèles composites comme si ...Compositing modèles multiples dans jTemplates

<textarea id="templateList" class="template"><!-- 

    {#template RESULTS} 
    This a template for generating a list of results 
    {#include PAGINATION root=$T} 
    {#/template RESULTS} 

    {#template PAGINATION} 
    This is a template for generating pagination through the results 
    {#/template PAGINATION} 

--></textarea> 

Cependant, il y a des moments où il serait utile d'être en mesure de composite modèles complètement différents. Par exemple, j'ai beaucoup de différents types de listes, chacune ayant un modèle distinct. En utilisant la méthode ci-dessus, je suis obligé de continuer à répéter le même morceau de code pour la pagination encore et encore dans chacun de mes modèles pour différentes listes.

Je préférerais faire quelque chose comme ce qui suit ...

<textarea id="templateList" class="template"><!-- 
    This is a template listing results 
    {#some kind of call to templatePagination} 
--></textarea> 

<textarea id="templatePagination" class="template"><!-- 
    This is a template for generating pagination 
--></textarea> 

Est-ce que quelqu'un sait si une telle chose est possible et, si oui, comment s'y prendre?

Merci!

Répondre

0

Vous pouvez ajouter tous vos modèles nécessaires ensemble lorsque vous avez setTemplate si vous n'avez pas de modèle de réfrence.

$(container) 
    .setTemplate($('templateList').html() + $('templatePagination').html()) 

ou vous pouvez createTemplate et passer la référence en tant que include

var t = $.createTemplate($('templatePagination').html()); 
$(container).setTemplate($('templateList').html(), t._templates) 
0

Vous devriez être en mesure de le faire:

var templates = $.createTemplate($('templateList').html())._templates; 

Ensuite, vous pouvez utiliser des modèles et faire:

$('#SOMEDIV').setTemplate(templates['PAGINATION'],templates); 
&('#SOMEDIV').processTemplate(data); 

Je suis un js/jquery newbie donc désolé si ce n'est pas parfait. Je le charge à partir d'une URL en utilisant $ .createTemplateURL au lieu d'une zone de texte nous