是否有一种方法可以将Handlebars部分(带变量)传递给另一个助手

Is there a way to pass a Handlebars partial (with variables) into another helper?

本文关键字:变量 另一个 部分 一种 方法 是否 Handlebars      更新时间:2023-09-26

所以有一个模板文件,是生成几个不同的布局组件在我的网页与不同的变量规定的大小和什么。因此,为了减少项目中的文件数量,我试图为代码片段重用模板文件,而不是为它们提供专用文件。通过子表达式,我有了这样做的想法:

{{ escape (template var1=var1 var2=var2 var3=var3) }}

,其中escape是一个助手,它接受一个字符串并转义它(很有趣),和:

(template var1=var1 var2=var2 var3=var3)

应该具有与{{> template var1=var1 var2=var2 var3=var3 }}相同的效果,返回完整的标记,可能是字符串。

helper似乎没有收到任何字符串,因为在参数上运行typeof正在返回undefined。我曾假设,因为{{> template var1=var1 var2=var2 var3=var3 }}在文件中被更高地使用,这是注册它用于文件的其余部分,但现在我认为这不是Handlebars如何做它的事情。

是否有可能检索这样的部分,或者它需要使用{{>语法(这不起作用)?

在我问这个问题的时候,我对如何以编程方式将上下文应用于部分感到有点困惑。现在我已经做了更多的研究(我确实在询问之前尝试过,但一无所获),我现在知道Handlebars.compile(partial)将返回给定部分的对象,并允许通过partial(context)给出应该返回的上下文。


样例代码

function escape(partial) {
    let compiledPartial = Handlebars.compile(partial);
    let context = { greeting: "Hello World!" };
    return compiledPartial(context);
}