2012-12-10 9 views
5

私はテンプレートを整理するために7〜8行のHTMLを出力するヘルパーを作成しています(DRYに準拠しています - ちょっと変わったwikka wikka)。ここでハンドルバーhelper in 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) { 
... 
} 

..私の値のそれぞれが設定されている、およびオプションはNOW空のハッシュを持つオブジェクトになります。

明示的にparamsを宣言していますが、むしろハッシュを使用しています。どのようにこれを行うにはどのような考え? Handlebars doc on helpersから

答えて

4

Aハンドルヘルパーコールがゼロ又は 以上のパラメータ(スペースで区切られた)、続いて単純な識別子です。各パラメータは、Handlebars 式です。
[...]
ハンドルバーヘルパーは、最終的なパラメータとして のキーと値のペアのシーケンスを受け取ることもできます(マニュアルでは ハッシュ引数と呼ばれます)。ハッシュ引数のキーはそれぞれ で、単純な識別子でなければならず、その値はHandlebars式です。 これは、値が単純な識別子、パス、または文字列であることを意味します。

ハッシュとしてあなたのパラメータを使用するには、私もその文書を読んだあなたは

{{{addOn . Code=CampaignColorType.Code HexColor=HexColor Content="some content"}}} 

として、あなたのヘルパーを呼ぶだろうし、彼らはあなたのヘルパーに

define(['handlebars'], function (Handlebars) { 
    function addOn(context, options) { 
     console.log(options.hash); 
    } 

    Handlebars.registerHelper('addOn', addOn); 
    return new Handlebars.SafeString(addOn); 
}); 
+0

options.hashとして利用可能となります私はそれを見逃した。ありがとう。 –