requireJS中的把手助手

requireJS中的把手助手,requirejs,handlebars.js,Requirejs,Handlebars.js,我正在创建一个助手来输出7或8行HTML来清理我的模板(并遵循DRY-hey-that-hylmed-wikka-wikka) 下面是一个调用插件助手的示例 {{#each promotion.CampaignColors}} {{{addOn . CampaignColorType.Code CampaignColorType.Name HexColor "some content" "a title"}}} {{/each}} 现在,据我所知,上下文之后的所有内容都应该是名为opt

我正在创建一个助手来输出7或8行HTML来清理我的模板(并遵循DRY-hey-that-hylmed-wikka-wikka)

下面是一个调用插件助手的示例

{{#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) {
...
}
。。我的每一个值都被设置,选项现在变成了一个散列为空的对象

显式声明参数是可行的,但我更愿意使用散列。你有什么想法吗

来自:

Handlebar助手调用是一个简单标识符,后跟零或零 更多参数(用空格分隔)。每个参数都是一个把手 表达式。
[…]
车把助手还可以收到可选的 作为最终参数的键值对序列(称为 文档中的散列参数)。散列参数中的键必须是 每个都是简单标识符,值是Handlebar表达式。 这意味着值可以是简单的标识符、路径或字符串

要将参数用作散列,可以将助手作为

{{{addOn.code=activitycolortype.code HexColor=HexColor Content=“some Content”}}
它们将作为
选项提供。hash
在您的助手中

define(['handlebar'],函数(handlebar){
函数插件(上下文、选项){
log(options.hash);
}
车把。登记帮助器('addOn',addOn);
返回新的车把。安全字符串(插件);
});

我甚至读过那篇文档,只是错过了。谢谢你,伙计。