是否有Handlebars保留字的官方列表?

时间:2017-02-08 14:53:27

标签: node.js handlebars.js email-templates

在与名为{{engine.x.y}}的模板var挣扎之后,这是一个静默的#34;在我为{{_engine.x.y}}之类的其他内容更改之前没有显示任何内容,我看到了other words such as {{action}} seemed to be "reserved", with no "escaping" possibility ...

是否有任何此类"保留字的列表"为了减少惊喜因素" ?我找不到任何东西。

修改

  • 更奇怪的是,当我直接使用{{engine}}(而不是engine.x.y)时,它总是会被字符串".hbs"

  • 取代
  • 但是在我的上下文中(Node v4.6 + email-templates + handlebars){{action}}正常工作(linked problem above看起来特定于Ember.js)

1 个答案:

答案 0 :(得分:2)

找到它 - 问题不在于Handlebars(Josh Crozier发现在上面的评论中没有保留任何名字),它与你所在的email-templates库有关。使用。它使用的render函数在作为模板上下文传递的对象上设置了几个属性,这意味着如果您的对象包含具有相同名称的属性,则它们会被破坏。

可以找到email-templates源代码中的相关代码行here,但为了完整起见,被覆盖的属性包括:

  • filename(设置为模板的文件名)
  • engine(设置为正在使用的模板引擎的文件扩展名)
  • templatePath(设置为包含模板的目录)

最明显的解决方案是更改名称,但如果这不是一个选项,则可能需要file an issue on their repo