2012-12-10 153 views
5

我创建一个帮助器来输出7或8行HTML清理我的模板(并遵守干 - 嘿,押韵 - wikka wikka)。在requireJS的把手帮手

这里是调用插件助手现在

{{#each promotion.CampaignColors}} 
    {{{addOn . CampaignColorType.Code CampaignColorType.Name HexColor "some content" "a title"}}} 
{{/each}} 

,从我了解的一个例子,上下文后,一切都应该是一个叫做哈希选项。这里是我的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) { 
... 
} 

..我的每个值都被设置和选项,现在成为一个空哈希的对象。

声明PARAMS明确的作品,但我宁愿使用散列。有关如何做到这一点的任何想法?

回答

4

Handlebars doc on helpers

甲把手辅助呼叫是一个简单的标识符,随后的零个或更多 参数(由空格分隔)。每个参数都是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); 
}); 
+0

我甚至读到文件,而我错过了它。谢了哥们。 –