2015-01-03 78 views
6

我正在嘗試編寫一個可放置在模板內的流星包。所以我第一次嘗試註冊一個幫手。流星 - 什麼是Spacebars.kw {hash:Object}

Template.registerHelper('testHelper', function(a, b) { 
     console.log(a); 
     console.log(b); 
}) 

我已經添加了包內/packages,並在我的客戶模板,當我加{{testHelper "hello" "meow"}},控制檯登錄hellomeow,這是我所期待的。

當我添加{{testHelper "hello"}}時,我期望控制檯記錄hellonull,因爲沒有任何東西作爲第二個參數傳遞。但相反,它返回hello和一個對象 - Spacebars.kw {hash: Object}

這是什麼Spacebars.kw {hash: Object}?如果我想讓它返回null,我該怎麼辦?

回答

13

Spacebars.kw包含一個hash對象,該對象具有輸入參數的散列。

流星有兩種方法來匹配方法,一種是直接匹配,即直接輸入參數的地方,例如{{testHelper "variable1" "variable2" "variable3"}},會匹配爲function(a,b,c)作爲分別與a,b和c匹配的變量1-3。

輸入的第二種方法是使用散列

{{testHelper a="variable1" b="variable2" c="variable3"}} 

這將給出單個參數來function(a),其中a是Spacebars.kw對象。

Spacebars.kw對象將具有子對象調用hash與匹配的結構:

{ "a" : "variable1", 
    "b" : "variable2", 
    "c" : "variable3" } 

流星將嘗試把第一個參數直接匹配,但是隨後的參數將被匹配了作爲散列櫃面第二輸入爲空,例如在使用{{testHelper 'hello'}}的情況下,b將爲空,因此它將作爲散列給出。

它的一般給出,所以如果你得到b作爲Spacebars.kw對象,你可以假設沒有第二個輸入。另一種方法是你可以使用哈希樣式聲明,然後直接檢查哈希值是null

{{testHelper text="Hello"}} 
{{testHelper text="Hello" othertext="Hellooo"}} 

和助手:

Template.registerHelper('testHelper', function(kw) { 
    console.log(kw.hash.text); 
    console.log(kw.hash.othertext); 
}); 
+0

謝謝Akshat再次,你是個明星!我遵循哈希樣式聲明,它很好用。我確實有一個後續問題,我將作爲一個新問題發佈。順便說一句,這是'Spacebars.kw'記錄?我無法在文檔中找到它,也許我們可以將其添加到文檔中? – dayuloli

+0

kw代表什麼? –