2013-10-24 5 views
6

में चयनित विकल्प टेक्स्ट प्राप्त करें मैं चयन सूची को बांधने के लिए knockoutjs का उपयोग कर रहा हूं। यहां एक Sample है, मैं चयनित मूल्य के बजाय चयनित विकल्प टेक्स्ट प्राप्त करना चाहता हूं।नॉकआउट

knockoutjs का उपयोग करके इसे कैसे प्राप्त करें?

<select id="projectMenu" name="projectMenu" data-bind=" 
     value: selectedProject, 
     options:  projectFilters, 
     optionsText: 'a', 
     optionsValue: 'b', 
     optionsCaption: '-- Select Project --' 
    "> 
    </select> 
<b>Selected Project:</b> <span data-bind="text: selectedProject"></span> 
+0

एक कोड उदाहरण के लिए, ना कि केवल एक लिंक प्रदान करें। – dokaspar

+1

संभावित डुप्लिकेट? http://stackoverflow.com/questions/11112435/how-can-i-get-the-text-of-a-selected-item-from-a-knockout-observable –

उत्तर

1

जहां तक ​​मुझे चिंतित है कि यह केवल एक साधारण बाध्यकारी के साथ संभव नहीं है। लेकिन आप आसानी से computedObservable जो optionText OptionValue

vm.selectedOption= ko.computed(function() { 
    for (var i = 0; i < this.projectFilters().length; i += 1) { 
     var data = this.projectFilters()[i]; 
     if (data.a === this.selectedProject()) { 
      return data.b; 
     } 
    } 
    return null; 
}, vm); 
+0

मैं ऐसा नहीं कर सकता क्योंकि मैं नहीं चाहता एक बड़ा संग्रह फिर से शुरू करने के लिए, और मेरे विचार में मेरी कई चुनिंदा सूची है। इसलिए यह प्रदर्शन को कम करेगा। – Sudarshan

+3

@MotaChuha जब तक कि बहुत बड़े संग्रह नहीं होते हैं जो ठीक काम करना चाहिए - आधुनिक पीसी तेजी से हैं;)। और मैं इस समाधान को अस्वीकार करने से पहले प्रदर्शन परीक्षण करने की सलाह दूंगा - शायद थोड़ा धीमा प्रदर्शन स्वीकार्य होगा। यदि नहीं, तो आपको आवश्यकता प्राप्त करने के लिए शायद कस्टम नॉकआउट बाध्यकारी लिखना चाहिए। –

+0

ठीक है, लेकिन यह मेरा आखिरी विकल्प होगा। – Sudarshan

10

के आधार पर चयन का सबसे सरल तरीका यह optionsValue बाध्यकारी दूर करने के लिए है करने के लिए बना सकते हैं। जब आप विकल्प को बाध्य नहीं करते हैं तो बाध्यकारी, संपूर्ण आइटम चयनित मान होगा।

<select id="projectMenu" name="projectMenu" data-bind=" 
     value: selectedProject, 
     options:  projectFilters, 
     optionsText: 'a',   
     optionsCaption: '-- Select Project --' 
    "> 
    </select> 
<b>Selected Project: 
<span data-bind="text: selectedProject() ? selectedProject().a : 'no selection '"></span> 

See fiddle

+0

बेवकूफ लिंक काम नहीं कर रहा – Sudarshan

+0

मेरे लिए यह काम करता है। आपको किस तरह की त्रुटि मिलती है? – Damien

+0

यह सब्सक्राइब ईवेंट के लिए काम कर रहा है, बदलाव की घटना के लिए नहीं। वैसे भी अच्छा समाधान साथी। अपने काम की सराहना करें। जिस तरह से बेवकूफ मेरे लिए ठीक काम कर रहा है। – Prageeth

1
vm.selectedCountryName = ko.computed(function() { 
     var text = ''; 
     ko.utils.arrayForEach(vm.countries(), function (item) { 
      if (item.CountryId == vm.selectedCountry()) { 
       text = item.CountryName; 
       return; 
      } 
     }); 
     return text; 
    });