如果你正在预编译Handlebars.js的自定义helper,那么如何注册该自定义helper?

7
我正在尝试使用命令handlebar app/views/templates/walrus.handlebar预编译Handlebars.js模板app/views/templates/walrus.handlebar,但是失败了,因为该模板使用了一个我在单独的js文件public/javascripts/handlebar_helpers.js中定义的自定义helper。
如何调用命令行版本的Handlebars,以便它知道具有自定义helper的javascript文件?

你最终找到了如何做到这个的方法吗? - empz
2个回答

5
handlebars <input> -f <output> -k <helper>

这里有相关的文档:http://handlebarsjs.com/precompilation.html

编辑于2014年3月:

如果您在阅读文档时遇到问题,这里有一个自定义helper "fullname"的例子:

handlebars myTemplate.handlebars -f handlebars-fullname.js -k fullname

有了这个助手:

Handlebars.registerHelper('fullname', function(person) {
  return person.firstName + " " + person.lastName;
});

您仍然需要在页面中包含具有handlebars.runtime.js的助手。


@wusher 你的调用是什么样子的?我不确定如何在自定义帮助器中使用 -k。 - surj
我正在寻找这个问题的答案。-k 只适用于本地助手,而不适用于自定义助手... - empz
@所有人 看看这个额外的例子。它已经运行了多年,并且一直很有效。 - Chris Biscardi
注意AMD支持,您还需要在Handlebars.registerHelper函数之前添加Handlebars = Handlebars["default"]; - ldg

0
handlebars myTemplate.handlebars -f handlebars-fullname.js -k fullname

上述步骤并非强制性的,即使在预编译期间不指定帮助程序名称,您的把手模板仍将起作用。但是,下面的代码(基本上应包含所有帮助程序)需要插入客户端。

    Handlebars.registerHelper('fullname', function(person) {
  return person.firstName + " " + person.lastName;
});

我试过这个,效果非常好!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接