我希望通过Lookup助手渲染一个把手部分。这不是问题,我可以用这段代码来做到这一点:
{{> (lookup . 'type') }}
但是,如果变量type
没有呈现我的partials目录中的值,则抛出500错误。 Handlebars通过故障转移内容支持此功能。如:
{{#> myPartial }}
Failover content
{{/myPartial}}
我的问题是,我可以将查找与故障转移结合起来吗?
我希望做类似的事情:
{{#> (lookup . 'type') }}
Failover content
{{/(lookup . 'type')}}
答案 0 :(得分:3)
谢谢@ 76484,但我想我找到了我想要的东西:
<stdint.h>
这避免了对助手的需求,并且完全符合我的要求!
答案 1 :(得分:0)
我认为没有办法将dynamic lookup helper和partial block结合起来。但是,我认为我们可以提出一个自定义助手,为我们完成这项工作。
我们的助手需要做的就是采用部分名称,并尝试在Handlbars.partials
地图中找到该名称的部分名称。如果它找到partial,它将返回使用当前数据上下文调用该partial模板的结果。否则,我们的帮助器将在其块中返回模板(故障转移内容)。
Handlebars.registerHelper('partialResolver', function (partialName, options) {
var partial = Handlebars.partials[partialName];
if (partial && !Handlebars.Utils.isFunction(partial)) {
Handlebars.partials[partialName] = partial = Handlebars.compile(partial);
}
return (partial ? partial : options.fn)(this);
});
注意:中间的条件是必需的,因为partials可以作为字符串(按需编译)或预编译模板注册。如果partial是字符串,我们会编译它并将其分配给Handlebars.partials[partialName]
。
我创建了一个示例fiddle供参考。