我正在创建一个帮助程序来输出 7 或 8 行 HTML 来清理我的模板(并遵守 DRY - 嘿,押韵 - wikka wikka)。
这是调用 addOn 助手的示例
{{#each promotion.CampaignColors}}
{{{addOn . CampaignColorType.Code CampaignColorType.Name HexColor "some content" "a title"}}}
{{/each}}
现在,据我所知,上下文之后的所有内容都应该是一个称为选项的哈希。这是我的 addOn.js 的 stub
define([
'handlebars',
'hbs!templates/addOn',
], function (Handlebars, AddOnTemplate) {
function addOn(context, options) {
var data = {};
var compiledTemplate = AddOnTemplate(data);
console.log(compiledTemplate);
return compiledTemplate;
}
Handlebars.registerHelper('addOn', addOn);
return new Handlebars.SafeString(addOn);
});
但是,选项仅设置为我传递的第一个参数。如果我将方法签名更改为:
function addOn(context, key, displayName, value, content, title, test, options) {
...
}
.. 我的每个值都被设置,现在选项变成了一个带有空散列的对象。
明确声明参数有效,但我更愿意使用哈希。关于如何做到这一点的任何想法?
最佳答案
来自 Handlebars doc on helpers :
A Handlebars helper call is a simple identifier, followed by zero or more parameters (separated by space). Each parameter is a Handlebars expression.
[...]
Handlebars helpers can also receive an optional sequence of key-value pairs as their final parameter (referred to as hash arguments in the documentation). The keys in hash arguments must each be simple identifiers, and the values are Handlebars expressions. This means that values can be simple identifiers, paths, or Strings.
要将您的参数用作散列,您可以将您的助手称为
{{{addOn . Code=CampaignColorType.Code HexColor=HexColor Content="some content"}}}
它们将作为
options.hash
提供在你的 helper define(['handlebars'], function (Handlebars) {
function addOn(context, options) {
console.log(options.hash);
}
Handlebars.registerHelper('addOn', addOn);
return new Handlebars.SafeString(addOn);
});
关于requirejs - requireJS 中的 Handlebars 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13810484/