我正在创建一个帮助器,输出7或8行HTML来清理我的模板(并遵守DRY - 嘿,这是押韵 - wikka wikka)。
以下是调用addOn帮助程序
的示例{{#each promotion.CampaignColors}}
{{{addOn . CampaignColorType.Code CampaignColorType.Name HexColor "some content" "a title"}}}
{{/each}}
现在,根据我的理解,上下文之后的所有内容都应该是一个名为options的哈希。这是我的addOn.js
的存根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) {
...
}
..我的每个值都被设置,并且选项NOW成为具有空哈希的对象。
声明params明确有效,但我更喜欢使用hash。有关如何做到这一点的任何想法?
答案 0 :(得分:4)
Handlebars助手调用是一个简单的标识符,后跟零或 更多参数(以空格分隔)。每个参数都是Handlebars 表达。
[...]
车把帮手也可以选择 键值对序列作为其最终参数(称为 文档中的哈希参数)。散列参数中的键必须 每个都是简单的标识符,值是Handlebars表达式。 这意味着值可以是简单的标识符,路径或字符串。
要将参数用作哈希,您可以将助手称为
{{{addOn . Code=CampaignColorType.Code HexColor=HexColor Content="some content"}}}
它们将在您的助手中以options.hash
显示
define(['handlebars'], function (Handlebars) {
function addOn(context, options) {
console.log(options.hash);
}
Handlebars.registerHelper('addOn', addOn);
return new Handlebars.SafeString(addOn);
});