2012-03-12 32 views
8

Tôi có một hệ thống phân cấp đối tượng đơn giản bao gồm:bố trí đệ quy với Handlebars.js

Category 
String name 
List childCategories; 

tôi muốn đại diện cho cách bố trí này sử dụng tay lái một cách chung chung, nhưng tôi đang gặp khó khăn hiểu làm thế nào để bố trí làm tổ. Với bố cục này:

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

Cách tốt nhất để sử dụng lại mẫu danh mục hiện có cho tất cả các danh mục con là gì? Có cần đăng ký một người xử lý không? Có cách nào dễ hơn không?

Trả lời

-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

Vâng đó sẽ làm cho tôi một mức độ sâu sắc, nhưng các chuyên mục con cũng có thể có loại con và do đó trên, vì vậy tôi thực sự cần nó để chỉ tái sử dụng toàn bộ bố trí nếu bạn biết những gì tôi có nghĩa là – user842800

+0

Hm. Sau đó, sử dụng câu trả lời đó: http://stackoverflow.com/questions/8044919/are-recursive-collections-possible-in-sproutcore2 – kirilloid

16

Hai mẫu

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

Và một Helper tay lái

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

Công việc đó hoàn hảo, cảm ơn. – ole

+0

Tôi đã sử dụng điều này khi tôi bắt đầu làm việc với HB để có được các mẫu lồng nhau, và bây giờ tôi đã phát hiện ra các partials. Có sự khác biệt nào không? –