2013-08-21 5 views
11

पर रीसेट करें मेरे पास एक चुनिंदा बॉक्स है जिसे मैं नॉकआउट का उपयोग करके पॉप्युलेट कर रहा हूं। एक बार उपयोगकर्ता ने फ़ॉर्म पर कुछ चयन किए हैं, तो मैं उस चयन बॉक्स को अपने डिफ़ॉल्ट मान पर रीसेट करना चाहता हूं जो optionsCaption में सेट है। आप यह करने के बारे में कैसे जाएंगे? मैंने इसे एक खाली स्ट्रिंग पर सेट करने का प्रयास किया है, हालांकि यह उस मान के साथ छोड़ देता है जिसे उपयोगकर्ता ने चुना है।Knockout.js किसी चयनित बैक के मान को अपने डिफ़ॉल्ट मान

यहाँ मेरी कोड है:

self.components = ko.observableArray(["Component":"1234", "Component":"5678"]); 
self.component = ko.observable(); 

क्या मैं तो दूसरे खंड में करने की कोशिश है:

self.component(""); 

हालांकि इस के लिए प्रकट होता

<select data-bind="options: components, optionsValue: 'Component', optionsText: 'Component', optionsCaption: 'Choose Component', value: component"></select> 

यहाँ js है कोई प्रभाव नहीं है।

संपादित करें: यहाँ एक बेला http://jsfiddle.net/BASY4/

+0

'self.component (" "); 'मेरे लिए ठीक काम करता है: http://jsfiddle.net/8sku5/। क्या आप कृपया अपना जेएसफिल्ड बना सकते हैं जो आपकी समस्या को पुन: उत्पन्न करता है? – nemesv

+0

अब जोड़ा गया बेवकूफ –

उत्तर

22

उपयोग

self.component(null);

बजाय

self.component("");

कार्यjsfiddle है।

अन्य मान केवल तभी अनुमति दी जाती है जब वे स्रोत सूची (यहां self.components) में हों अन्यथा मूल्य बाध्यकारी तुरंत रीसेट हो जाता है।

9

आपके द्वारा उपयोग किए जाने वाले नॉकआउटज के किस संस्करण के आधार पर, इस प्रश्न का उत्तर बदल जाएगा।

यदि आप संस्करण 2.2.1 का उपयोग कर रहे हैं जैसे jsfiddle का उपयोग कर रहा है, तो आपको इसका उपयोग करने की आवश्यकता होगी;

self.component(null); 
// or 
self.component(undefined); 

आपको नवीनतम संस्करण में इस संस्करण को बदलने के लिए थे, तो 2.3.0 तो आप वास्तव में उपयोग कर सकते हैं;

self.component(null); 
// or 
self.component(undefined); 
// OR 
self.component(''); 
संबंधित मुद्दे