2012-09-24 27 views
48

我想創建一個使用Meteor的自定義幫助器。繼到文檔在這裏: https://github.com/meteor/meteor/wiki/Handlebars如何在流星的助手中使用多個參數?

我試圖定義我的助手如下:

Template.myTemplate.testHelper = function(foo, bar, options) { 
    console.log(foo); 
    console.log(bar); 
} 

我的模板是這樣的:

<template name="myTemplate"> 
    {{#testHelper "value1" "value2"}} 
    {{/testHelper}} 
</template> 

看着我的控制檯輸出,我預計看到2行輸出:

value1 
value2 

但是我的主機看起來像:

value1 
function (data) { 
    // don't create spurious annotations when data is same 
    // as before (or when transitioning between e.g. `window` and 
    // `undefined`) 
    if ((data || Handlebars._defaultThis) === 
     (old_data || Handlebars._defaultThis)) 
     return fn(data); 
    else 
     return Spark.setDataContext(data, fn(data)); 
    } 

請注意,我是完全新的流星,並handlebars。我認爲使用下劃線會更快樂,但流星瀏覽的文檔幾乎全部強調了下劃線。我做錯了定義我的幫助函數嗎?它似乎沒有看到第二個參數「bar」,而是將其解釋爲選項。 (注意:如果我console.log(選項)它返回'未定義')。

流星版本0.4.0(8f4045c1b9)

回答

53

你的邏輯是好的,只是進行一些更改模板

<template name="myTemplate"> 
    {{testHelper "value1" "value2"}} 
</template> 

裸記住,testHelper功能在MyTemplate的模板只定義了。

如果你想註冊testHelper全球你需要做這樣的事情

Handlebars.registerHelper('testHelper', function(foo, bar){ 
    console.log(foo); 
    console.log(bar); 
}); 

玩得開心

+2

如果您需要{{#if}} Content {{/ if}}樣式幫助程序,這無效。 – Donflopez

+8

可以在這種情況下合併幫助者:'{{#if testHelper「v1」「v2」}}一些模板{{/ if}}' – Matanya

+0

'Handlebars.registerHelper'應該放在哪裏? –

1

加成

<template name="myTemplate"> {{testHelper "value1" "value2"}} </template>

不是傳遞一個值作爲一個參數傳遞函數作爲參數這裏是代碼

<template name="myTemplate"> 
    {{ testHelper1 (testHelper2 "value2") }} 
</template> 

歡呼!!!!!

相關問題