2013-06-22 113 views
0

我剛開始玩節點,表達,因此,玉。我試圖在玉模板中做這樣的事情:node,express,jade:如何從哈希創建選擇選項

my-options = {"this": "something", "that": "something else", "those": "more stuff", "these": "also included"} 

form 
    select(name="myselection") 
    each option, key in my-options 
     option(value="#{key}") option 

但是,我得到的只是一個500服務器錯誤,根本沒有任何幫助。我在這裏做錯了什麼?任何幫助將非常感激。

更新 我剛剛發現,玉模板本身不能包含變量定義。因此,需要在相應的router.js文件中定義my_options散列並將其作爲參數傳遞給相應的result.render()函數。

回答

1

您的第一行必須是可執行的JS代碼,'my-options'不是有效的JS變量名稱。

+0

感謝@JohnSz,所以我改變了這一行'VAR my_options = ...' 。但我仍然得到這些錯誤 – Bunjip

+0

另外:option(value =「#{key}」)#{option} – JohnSz

+0

Thnx again。令我遺憾的是,這似乎並不是解決方案。 – Bunjip

0

實際上,你可以在Jade中定義變量,你只需要用連字符開始行。在一行的開頭的一個-告訴Jade執行後面的代碼而不輸出它。一行的開頭的=告訴Jade執行後面的代碼並在完成後輸出。

因此,例如,如果你做

- var foo = "bar" 
= 2+2 
p #{foo} 

,你會看到這個頁面源代碼:

4 
<p>bar</p> 
+0

也謝謝你! 我已經閱讀了關於這種可能性與玉的變量。然而,當我測試這個稍微更復雜的變量結構時,爲了可讀性的原因,我在視圖上拉伸了一些東西,但是我無法使其工作(爲每行添加一個連字符)... – Bunjip

+0

您可以舉一個例子更復雜的變量結構,將無法正常工作? – Smitha

+0

當然,我只是想聲明一些關聯數組狀結構,如 ' - VAR my_options = {鍵: 「值1」, - KEY2: 「值2」, - ... - keyX: 「valueX」 };' D * mn,它不會在註釋部分顯示換行符...因此,出於可讀性原因,每個鍵值對都放在新行上。 – Bunjip