使用Lookup Helper的Handlebars故障转移内容

时间:2017-08-22 18:49:09

标签: javascript handlebars.js

我希望通过Lookup助手渲染一个把手部分。这不是问题,我可以用这段代码来做到这一点:

{{> (lookup . 'type') }}

但是,如果变量type没有呈现我的partials目录中的值,则抛出500错误。 Handlebars通过故障转移内容支持此功能。如:

{{#> myPartial }}
  Failover content
{{/myPartial}}

我的问题是,我可以将查找与故障转移结合起来吗?

我希望做类似的事情:

{{#> (lookup . 'type') }}
Failover content
{{/(lookup . 'type')}}

2 个答案:

答案 0 :(得分:3)

谢谢@ 76484,但我想我找到了我想要的东西:

<stdint.h>

这避免了对助手的需求,并且完全符合我的要求!

答案 1 :(得分:0)

我认为没有办法将dynamic lookup helperpartial 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供参考。