आम तौर पर जब मैं एक का चयन करें सूची है मैं इसे नॉकआउट के साथ इस तरह बाँध:चयनित विकल्प ईद और मूल्य
<select
data-bind="
options: data,
optionsText: 'Name',
optionsValue: 'Id',
optionsCaption: 'Select ...',
value: dataSelectedId" ></select>
लेकिन वहाँ इस तरह के बंधन के साथ एक समस्या है: आप चयनित ऑब्जेक्ट नहीं है। इसके बजाय आपके पास आईडी है। इन दो आवश्यकताओं को कैसे मर्ज करें: आइटम की आईडी और आइटम दोनों के लिए बाध्यकारी है?
अभी मैं computed
नमूदार का उपयोग चयनित आइटम, जो आमतौर पर इस तरह दिखता है प्राप्त करने के लिए:
self.dataSelectedCO = ko.computed(function() {
for (var i = 0; i < self.data().length; ++i)
if (self.data()[i].Id() == self.dataSelectedId())
return self.data()[i];
});
मैं एक कस्टम फ़ंक्शन का उपयोग मूल्य गेटर रैप करने के लिए कोशिश की है, लेकिन यह हर तत्व जब चयन परिवर्तन के लिए कहा जाता है , इसलिए इस दृष्टिकोण का उपयोग करने के यहां कोई लाभ नहीं है। Here एक jsfiddle है।
मैं इसे इस तरह से नहीं कर सकता, क्योंकि तब मैं इस चयन को ऐसे फॉर्म में नहीं रख सकता जो सर्वर पर भेजता है जब तक कि मैं चयनित आईडी के लिए अतिरिक्त छिपी फ़ील्ड नहीं बना देता। लेकिन इसके साथ बाध्य आईडी वाले छिपे हुए क्षेत्र का उपयोग करना इसे बनाएगा। – SOReader
यदि आप आईडी को SELECT के मान के रूप में चाहते हैं, तो चयनित आइटम के लिए गणना किए गए अवलोकन योग्य का उपयोग करना एक बहुत अच्छा तरीका है। – ManojRK