【问题标题】:Is there a way to pass a Handlebars partial (with variables) into another helper?有没有办法将 Handlebars 部分(带变量)传递给另一个助手?
【发布时间】:2016-10-11 06:58:03
【问题描述】:

所以有一个模板文件正在为我的网页中的一个组件生成一些不同的布局,这些布局具有不同的变量来指示大小等等。所以为了减少项目中的文件数量,我试图重用代码 sn-ps 的模板文件,而不是为它们提供专用文件。通过子表达式,我有了这样的想法:

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

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

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

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

助手似乎没有收到任何字符串,因为在参数上运行typeof 将返回undefined。我一直认为{{> template var1=var1 var2=var2 var3=var3 }} 在文件中的较高位置被使用,即注册它以在文件的其余部分中使用,但现在我认为这不是 Handlebars 的工作方式。

是否可以像这样检索部分,还是需要使用{{> 语法(这不起作用)?

【问题讨论】:

  • 为什么不将template 从部分辅助函数更改为块辅助函数,因为这就是您想要使用它的方式?
  • 是的,当我提交这个问题时,我并不熟悉以编程方式编译部分内容。我现在正在尝试使用这种方法,而不是我上面尝试的方法。

标签: javascript handlebars.js


【解决方案1】:

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


示例代码

function escape(partial) {
    let compiledPartial = Handlebars.compile(partial);

    let context = { greeting: "Hello World!" };

    return compiledPartial(context);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多