2012-03-12 12 views
8

Mam prosty obiekt hierarchia składa się z:rekurencyjne układy z Handlebars.js

Category 
String name 
List childCategories; 

chciałbym reprezentować ten układ za pomocą kierownicy w sposób ogólny, ale mam kłopoty zrozumieć jak układy gniazdo. Biorąc pod uwagę ten układ:

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

Jaki jest najlepszy sposób ponownego wykorzystania istniejącego szablonu kategorii dla wszystkich kategorii dzieci? Czy konieczne jest zarejestrowanie programu obsługi? Czy istnieje prostszy sposób?

Odpowiedz

-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

Dobrze, że dostaniesz mnie głęboko jeden poziom, ale kategorie dziecko może mieć również kategorię dzieci i tak on, więc naprawdę potrzebuję go do ponownego wykorzystania całego układu, jeśli wiesz co mam na myśli – user842800

+0

Hm. Następnie użyj tej odpowiedzi: http://stackoverflow.com/questions/8044919/are-recursive-collections-possible-in-sproutcore2 – kirilloid

16

Dwa szablony

<!-- 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> 

I Kierownice Helper

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

To działa idealnie, dzięki. – ole

+0

Użyłem tego, gdy zacząłem pracować z HB, aby uzyskać szablony zagnieżdżone, a teraz odkryłem częściowe. Czy istnieje różnica? –