2012-03-12 15 views
8

Ho una gerarchia di oggetti semplice che consiste di:layout ricorsive con Handlebars.js

Category 
String name 
List childCategories; 

vorrei rappresentare questo layout utilizzando i manubri in modo generico, ma sto avendo difficoltà a capire come layout nido. Dato questo layout:

<script id="categories-template" type="text/x-handlebars-template"> 
    {{#categories}} 
     <ul > 
      <li>      
       <span>{{name}}</span>  
       <div>{{#childCategories}}{{/childCategories}}</div> 
      </li>  
     </ul> 
    {{/categories}} 
</script> 

Qual è il modo migliore per riutilizzare il modello di categorie esistenti per tutte le categorie figlio? È necessario registrare un gestore? C'è un modo più semplice?

risposta

-2
<script id="categories-template" type="text/x-handlebars-template"> 
    <ul> 
    {{#each categories}} 
     <li>      
      <span>{{name}}</span>  
      <div> 
       <ul> 
        {{#each childCategories}} 
         <li><!-- content: blah-blah-blah --></li> 
        {{/each}} 
       </ul> 
      </div> 
     </li> 
    {{/each}} 
    </ul> 
</script> 
+3

Bene che mi avrai un livello profondo, ma le categorie figlio possono avere anche le categorie dei bambini e così on, quindi ho davvero bisogno di riutilizzare l'intero layout se sai cosa intendo – user842800

+0

Hm. Quindi usa questa risposta: http://stackoverflow.com/questions/8044919/are-recursive-collections-possible-in-sproutcore2 – kirilloid

16

Due modelli

<!-- language: html --> 

<script id="categories-template" type="text/x-handlebars-template"> 
{{#categories}} 
    <ul > 
     <li>      
      <span>{{name}}</span>  
      {{#if childCategories}}      
      <div>{{&testHelper childCategories}}</div> 
      {{/if}} 
     </li>  
    </ul> 
{{/categories}} 
</script> 

<script id="categories-nested" type="text/html"> 
    {{&testHelper categories}} 
</script> 

E un manubrio Helper

Handlebars.registerHelper('testHelper', function(info) { 
    var template = Handlebars.compile($('script#categories-template').html()); 
    return template(categories); 
}); 
+0

Questo funziona perfettamente, grazie. – ole

+0

L'ho usato quando ho iniziato a lavorare con HB per ottenere modelli nidificati, e ora ho scoperto partial. C'è una differenza? –