Requirejs 带有handlebar.js和require.js的递归部分

Requirejs 带有handlebar.js和require.js的递归部分,requirejs,handlebars.js,Requirejs,Handlebars.js,我正在尝试使用手柄渲染节点的层次结构。我使用require.js和提取相关模板。我尝试调用部分递归函数,但失败得很惨 样本数据 var数据={ 节点:[ { 标题:“节点1”, 节点:[ {标题:“节点1-1”}, {标题:“节点1-2”} ] }, { 标题:“节点2” } ] }; 需要通话 require(['hbs!templates/linker/sub'],函数(tpl){ 控制台日志(tpl(数据)); }); 基本模板 模板/链接器/子 {{#if nodes} {{{#每

我正在尝试使用手柄渲染节点的层次结构。我使用require.js和提取相关模板。我尝试调用部分递归函数,但失败得很惨

样本数据

var数据={
节点:[
{
标题:“节点1”,
节点:[
{标题:“节点1-1”},
{标题:“节点1-2”}
]
},
{
标题:“节点2”
}
]
};
需要通话

require(['hbs!templates/linker/sub'],函数(tpl){
控制台日志(tpl(数据));
});
基本模板
模板/链接器/子

{{#if nodes}
    {{{#每个节点}}
  • {{title}}
  • {{/每个}}
{{/if}
输出(成功)

  • 节点1
  • 节点2
带有部分内容的模板
templates/linker/sub2,将上一个模板作为部分模板调用

{{#if nodes}
    {{{#每个节点}}
  • {{title}} {{>templates\u linker\u sub}
  • {{/每个}}
{{/if}
输出(成功)

  • 节点1
    • 节点1-1
    • 节点1-2
  • 节点2
带有递归部分的模板
templates/linker/sub3,将自身称为部分

{{#if nodes}
    {{{#每个节点}}
  • {{title}} {{>templates\u linker\u sub3}
  • {{/每个}}
{{/if}
输出(故障)

require.js超时,无输出


假设我可以在这个设置中使用递归分部,这是错误的吗?还是我在编写模板时遗漏了什么?

作为一种解决方法,我定义了一个自定义帮助程序来应用以前注册的部分。部分已编译,可通过
handlebar.partials

define(['handlebar',下划线'],function(handlebar,u41;{
函数部分(模板、上下文、选项){
var f=把手.部件[模板];
if(!.isFunction(f)){
返回“”;
}
返回新把手。安全字符串(f(上下文));
}
车把.注册表帮助器('recursivepartial',partial);
返回部分;
});
我修改过的模板看起来像

{{#if nodes}
    {{{#每个节点}}
  • {{title}} {{recursivepartial“templates\u linker\u sub”this}
  • {{/每个}}
{{/if}
我知道这已经很老了,但我刚刚创建了一个对require handlebar插件repo的pull请求,它将解决这个问题。此时,插件将解析部分并将所有引用的部分添加为依赖项(从而创建循环引用)
请参见此处:

可能是我开始时应该做的:)您的修补程序已合并,谢谢!