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

इनलाइन लिखने का कोई तरीका है? मेरे पास एक विकल्प का चयन है और मैं सही विकल्प चुनने के लिए 30+ मानों के लिए सशर्त कथन नहीं करना चाहता हूं।जेड

धन्यवाद!

उत्तर

4

सशर्त बयान

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

लेकिन क्या करना चाहिए, डिजाइन द्वारा हम हमेशा एक पारित कर सकते हैं व्यक्ति? इस तरह कोई तुलना आवश्यक नहीं है। कोड

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

यह निश्चित रूप से शानदार है। "अपरिभाषित" त्रुटियों को रोकने के लिए खाली वस्तु को पास करना, मिश्रण या सशर्तों की आवश्यकता नहीं है। मैंने सूची में विकल्प का चयन करने के लिए जावास्क्रिप्ट का उपयोग किया, क्योंकि सशर्त कथन काम नहीं करता था। – Patrick

-1

जब मान undefined या null है, तो विशेषता दिखाई नहीं देगी। यह काम करना चाहिए:

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

दुर्भाग्यवश, जेड 500 संदर्भकर्ता दिखाता है यदि व्यक्ति परिभाषित नहीं किया गया है। यदि व्यक्ति को परिभाषित किया गया है, तो यह इनपुट बॉक्स में मान के बजाय "स्ट्रिंग" कहता है। तो यह काम नहीं करता है। – Patrick

6

आप mixins

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