2011-12-19 88 views
6
- if (typeof(person) == 'undefined') 
    input(type="text", name="person[Name]") 
    - else 
    input(type="text", name="person[Name]", value="#{person.Name}") 

有沒有什麼辦法可以寫這個內聯?我有一個選項選擇,我不想爲30+個值做一個條件語句來選擇正確的選項。Jade內聯條件

謝謝!

回答

4

條件語句應該做

input(type='text', name='person[Name]', value= (person?(person.name?person.name:''):'')) 

然而,通過設計,我們總是可以傳遞人?這種方式不需要進行比較。代碼會像

input(type='text', name='person[Name]', value= person.name) 
+0

這當然是輝煌的。傳遞空對象以防止「未定義」錯誤,不需要混合或條件。我使用JavaScript來選擇列表中的選項,因爲條件語句不起作用。 – Patrick 2011-12-21 13:33:16

-1

當值爲undefinednull時,該屬性將不會顯示。這應該工作:

input(type='text', name='person[Name]', value= person && typeof(person)) 
+0

不幸的是,如果沒有定義人,Jade會顯示一個500 ReferenceError。如果定義了人員,則表示「字符串」而不是輸入框中的值。所以這是行不通的。 – Patrick 2011-12-20 08:40:28

6

你可以使用混入

mixin safeInput(person, property) 
    - if (typeof(person) == 'undefined') 
    input(type="text", name="person[#{property}]") 
    - else 
    input(type="text", name="person[#{property}]", value="#{person[property]}") 

然後

mixin safeInput(person, 'Name') 
mixin safeInput(person, 'Email') 
... 
+0

嗯,不錯。我必須看看它是否適用於選項選擇。謝謝! – Patrick 2011-12-20 18:37:37