2012-03-12 2 views
8

У меня есть простая иерархия объекта, состоящие из:Рекурсивные макетов с Handlebars.js

Category 
String name 
List childCategories; 

Я хотел бы представить эту схему с помощью рулей в общем виде, но у меня возникают проблемы понять, как гнездо макетов. С учетом этого макета:

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

Каков наилучший способ повторного использования существующего шаблона категорий для всех дочерних категорий? Нужно ли регистрировать обработчик? Есть ли более простой способ?

ответ

-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

Ну что получит меня на один уровень, но и дочерние категории также могут иметь дочерние категории и так , поэтому мне действительно нужно просто повторно использовать весь макет, если вы знаете, что я имею в виду – user842800

+0

Hm. Затем используйте этот ответ: http://stackoverflow.com/questions/8044919/are-recursive-collections-possible-in-sproutcore2 – kirilloid

16

два шаблона

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

И Рули Helper

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

Это работает отлично, спасибо. – ole

+0

Я использовал это, когда начал работать с HB, чтобы получить вложенные шаблоны, и теперь я обнаружил частичные. Есть ли разница? –

Смежные вопросы