2011-09-13 20 views
15

मैं चयन सूची में शब्दकोश संग्रह को बाध्य करने के लिए KnockoutJS का उपयोग कैसे करूं।KnockoutJS - एक शब्दकोश संग्रह के लिए डेटाबेस

मेरी "स्थलों" शब्दकोश JSON में इस तरह दिखाई देता है:

{"Europe":"Europe incl Egypt, Turkey & Tunisia","ANZO":"Australia & New Zealand","WorldwideUSA":"Worldwide (incl USA & Canada)"} 

कैसे मैं एक का चयन करें सूची में यह बाँध है। कुछ इस तरह:

data_bind="value: Destination, options: Destinations.Value, optionsText: Destinations.Key" 

उत्तर

25

आमतौर पर, जब एक शब्दकोश के साथ काम कर, आप एक सरणी कुंजी/मान गुणों के साथ वस्तुओं से युक्त करने के लिए इसे मैप करना चाहते हैं जाएगा।

होगा कुछ की तरह:

function mapDictionaryToArray(dictionary) { 
    var result = []; 
    for (var key in dictionary) { 
     if (dictionary.hasOwnProperty(key)) { 
      result.push({ key: key, value: dictionary[key] }); 
     } 
    } 

    return result; 
} 

नमूना यहाँ: http://jsfiddle.net/rniemeyer/7yDTJ/

+0

रयान, हम कैसे शब्दकोश से एक मूल्य पहले से चयन करते हैं? आपके बेवकूफ में मैंने चयनित डिस्टिनेशन में मूल्य जोड़ा: ko.observable ("ANZO") और दूसरा आइटम पूर्व-चयनित नहीं है। – user583066

+0

उदाहरण में 'विकल्प वैल्यू:' मान 'है, इसलिए यह कुंजी की बजाय मान की अपेक्षा कर रहा है। मैं नमूना अद्यतन: http://jsfiddle.net/rniemeyer/7yDTJ/ –

+0

मैं मानचित्रण प्लगइन http://knockoutjs.com/documentation/plugins-mapping.html –

12

मैं जानता हूँ कि यह पहले से ही उत्तर दिया गया है, लेकिन मैंने सोचा कि मैं एक अधिक व्यापक समाधान का हिस्सा चाहते हैं।

https://github.com/jamesfoster/knockout.observableDictionary

यहाँ एक jsfiddle जो यह

http://jsfiddle.net/HLnGs/

उम्मीद है कि किसी और को मिलेगा इस उपयोगी

+0

पर गौर करता हूँ यह वास्तव में उपयोगी है - मैं इसका इस्तेमाल मेरे वर्तमान विश्वविद्यालय परियोजना में और यह बहुत अच्छा काम करता है। धन्यवाद। –

4

एक सरल विकल्प क़ौम आप बना रहे हैं तो सर्वर API सिर्फ कन्वर्ट करने के लिए है सर्वर पर एक सरणी के लिए शब्दकोश और सरणी वापस करें:

Dictionary<string, string> myDict = ... ; 
return myDict.toArray(); // returns KeyValuePair<string, string>[] 

अब आप आसानी से नॉकआउट में सरणी बाध्य कर सकते हैं ...

<select class="form-control" 
    data-bind="options: opts, optionsText: 'Value', optionsValue: 'Key', optionsCaption: 'Show All', value: filter.myVal"> 
</select> 
संबंधित मुद्दे