如何使用递归模板?

L.T*_*L.T 8 meteor

我不知道如何处理模板中的递归数组.我在handlebarsjs的文档中找不到任何内容

有我的代码:js:


    var branch = [{
                name:"firstLayerNodeA",
                has_branch:true,
                branch:[{
                        name:"secondLayoutNodeA",
                        has_branch:false
                    },{
                        name:"secondLayoutNodeB",
                        has_branch:true,
                        branch:[{
                                name:"thirdLayerNodeA",
                                has_branch:true,
                                branch:[{
                                        //fourth Layer
                                        //fifth Layer
                                        //.....
                                }]
                        }]
                }]
            },{
                name:"firstLayerNodeB",
                has_branch:false
            }]

HTML

<Template name="tree">
  <ul>
  {{#each brach}}
      <li>
        name
        {{#if has_branch}}
          <ul>
          {{#each brach}}
              <li>
                name
                {{#if has_brach}}
                      {{#each brach}}
                          .....third layer
                          .....fourth layer
                          ....
                      {{/each}}
                {{/if}}
              </li>
          {{/each}
          </ul>
        {{/if}}
      </li>
  {{/each}}
  </ul>
</Template>
Run Code Online (Sandbox Code Playgroud)

有很好的想法可以处理模板中的分支吗?任何帮助表示赞赏.

Aks*_*hat 4

您可以使用嵌套模板:

客户端js

Template.tree.branch = function() {
    var branch = ...
    return branch;
}
Run Code Online (Sandbox Code Playgroud)

网页

<template name="tree">
  <ul>
    {{#each branch}}
      <li>    
        {{>branch}}
      </li>       
    {{/each}}
  </ul>
</template>

<template name="branch">
    {{name}}
    {{#if branch.length}}
       <ul>
           {{#each branch}}
               <li>
                   {{>branch}}
               </li>
           {{/each}}
       </ul>
    {{/if}}
</template>
Run Code Online (Sandbox Code Playgroud)

而且你也并不真正需要has_branch。只需检查分支数组的长度,因为每个分支只有在它是一个数组并且里面有东西的情况下才会循环