2012-12-10 219 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

我甚至讀到文件,而我錯過了它。謝了哥們。 –