我正在尝试使用 Handlebars 呈现节点层次结构。我使用 require.js 和Handlebars 插件来拉取相关模板。我尝试调用部分递归地失败了。
样本数据
var data = {
nodes: [
{
title: "node 1",
nodes: [
{title: "node 1-1"},
{title: "node 1-2"}
]
},
{
title: "node 2"
}
]
};
需要打电话
require(['hbs!templates/linker/sub'], function(tpl) {
console.log(tpl(data));
});
基本模板
模板/链接器/子
{{#if nodes}}
<ul>
{{#each nodes}}
<li>{{title}}
</li>
{{/each}}
</ul>
{{/if}}
输出(成功)
<ul>
<li>node 1</li>
<li>node 2</li>
</ul>
带有部分
templates/linker/sub2的模板,将前一个模板作为部分调用
{{#if nodes}}
<ul>
{{#each nodes}}
<li>{{title}}
{{> templates_linker_sub }}
</li>
{{/each}}
</ul>
{{/if}}
输出(成功)
<ul>
<li>node 1
<ul>
<li>node 1-1</li>
<li>node 1-2</li>
</ul>
</li>
<li>node 2</li>
</ul>
具有递归部分
模板/链接器/sub3的模板,将自身称为部分模板
{{#if nodes}}
<ul>
{{#each nodes}}
<li>{{title}}
{{> templates_linker_sub3 }}
</li>
{{/each}}
</ul>
{{/if}}
输出(失败)
require.js 超时,没有输出。
假设我可以在此设置中使用递归部分,我错了吗?还是我在编写模板时遗漏了什么?