2015-10-07 67 views
0

我現在有一個助手,看起來像:灰燼把手混淆傳遞價值

Ember.Handlebars.registerHelper('ifEq', function(a, b, opts) { 
    if (a == b) { 
    return opts.fn(this); 
    } else { 
    return opts.inverse(this); 
    } 
}); 

,並在我的模板,我做

GRAPH_TYPE: {{graphType}} 
    {{#ifEq graphType "p_graph"}} 
    TEST1 
    {{else}} 
    TEST2 
    {{/ifEq}} 

然而,這顯示

GRAPH_TYPE: p_graph TEST2 

這讓我感到困惑,因爲上面應該有精確的字符串匹配。

因此,我挖入網絡檢查員,注意到Handlebars幫手中的a的值爲graphType。爲什麼價值沒有通過,我如何確保通過?

回答

1

您需要註冊爲約束幫手:

Ember.Handlebars.registerBoundHelper('ifEq', function(a, b, opts) { 
         ^like so 

當您註冊一個正常/基本助手,你會看到字符串值傳遞的參數爲你見證。

但是,如果您希望將參數字符串綁定到模板中的屬性(在本例中爲此),則需要使用上面的函數簽名。

+0

感謝您的建議。我認爲我很接近,但現在我正在運行'未捕獲的錯誤:聲明失敗:registerBoundHelper生成的幫助程序不支持與Handlebars塊一起使用。「Ember 1.12 –

+0

在黑暗中拍攝 - 您可以嘗試將它用作子表達式,就像:'{{#if(ifEq graphType「p_graph」)}}' –

+0

相信會導致'Uncaught TypeError:undefined不是函數' –