Рекурсивные макеты с Handlebars.js - PullRequest
8 голосов
/ 13 марта 2012

У меня есть простая иерархия объектов, состоящая из:

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 ]

16 голосов
/ 03 апреля 2013

Два шаблона

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

И помощник на руле

Handlebars.registerHelper('testHelper', function(info) {
    var template = Handlebars.compile($('script#categories-template').html());
    return template(categories);
});
0 голосов
/ 13 марта 2012
<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...