2012-07-30 13 views
8

विफल रहता में RP Niemeyer के लेख Knockout.js Performance Gotcha #3 - All Bindings Fire Together, एक ड्रॉपडाउन सूची के निर्माण के लिए एक दृष्टिकोण प्रदान की जाती है:knockout.js: एक <select> पर एक containerless foreach का उपयोग कर इंटरनेट एक्सप्लोरर 8 में

<select data-bind="value: selectedOption"> 
    <!-- ko foreach: options --> 
    <option data-bind="attr: { value: id }, text: name"></option> 
    <!-- /ko --> 
</select> 

इस कोड को एक में भी है लेख से jsfiddle।

http://jsfiddle.net/rniemeyer/QjVNX/

हालांकि, जब मैं एक निर्माण एक परियोजना में का चयन करें, यह ठीक काम कर रहा था, जब तक मैं इंटरनेट एक्सप्लोरर में परीक्षण की इस पद्धति कार्यरत 8. IE8 में विफल रहा है और था "पार्स करने में अक्षम बाइंडिंग "।

दरअसल, आईई 8 में आलेख से बेवकूफ चलाने से भी एक त्रुटि होती है। क्या बनाने के लिए कोई तरीका है IE8 में का चयन करें (मुझे IE8 या उससे कम मानते हैं) नॉकआउट के foreach का उपयोग कर?

उत्तर

8

हां, यह निश्चित रूप से एक मुद्दा है। मुझे पोस्ट अपडेट करना होगा। आईई चयन के अंदर से टिप्पणियां पट्टी करेगा। https://github.com/mbest/knockout-repeat: https://github.com/SteveSanderson/knockout/issues/578

एक समाधान माइकल बेस्ट के repeat बाध्यकारी उपयोग करने के लिए है:

यहाँ एक मुद्दा है कि हम GitHub कि इसी तरह की है पर देखा है।

उन चीजों में से एक जो आपको करने की अनुमति देता है, एक अलग संदर्भ के साथ एक बार कई तत्व दोहराता है। तो, उस मामले में यह बिना किसी टिप्पणी के कंटेनर सिंटैक्स के समान कार्य करेगा। दोहराने के साथ

नमूना: http://jsfiddle.net/rniemeyer/QjVNX/

तुम भी, लेख (isolatedOptions) से अन्य तकनीक का उपयोग करने के लिए जब तक आप अपने विकल्प तत्वों पर अधिक नियंत्रण की जरूरत है चुन सकते हैं।

+0

सभी अंतर्दृष्टि के लिए धन्यवाद। जबकि दोहराना प्लगइन अच्छा लग रहा है, मैं एक और जावास्क्रिप्ट फ़ाइल निर्भरता से बचने के लिए, इसलिए मैं टेम्पलेट बाध्यकारी के साथ जा रहा हूँ। यह बहुत बुरा है कंटेनर नियंत्रण प्रवाह वाक्यविन्यास यहां काम नहीं करता है। – mg1075

+0

हे रयान, मैंने JSFiddle को अपडेट किया क्योंकि यह नॉकआउट-2.1.0.जेएस संदर्भ टूट गया था। – Tanner

3

हालांकि यह एक मुद्दा है, वास्तव में यहां 'foreach' का उपयोग करने की आवश्यकता नहीं है। नॉकआउट में एक विकल्प के लिए 'विकल्प' बाध्यकारी शामिल है जो आईई 8 में काफी खुशी से काम करता है।

कृपया प्रलेखन यहाँ देखें: http://knockoutjs.com/documentation/options-binding.html

<select data-bind="value: selectedOption"> 
    <!-- ko foreach: options --> 
    <option data-bind="attr: { value: id }, text: name"></option> 
    <!-- /ko --> 
</select> 

को बदला जा सकता है:

<select data-bind="value: selectedOption, options: options, optionsText: function(item) {return item.name}, optionsValue: function(item) {return item.id}></select> 

आशा इस मदद करता है।

+0

मुझे यह अजीब समस्या थी, कि बाध्यकारी किया गया था, और देव उपकरण ने डीओएम में विकल्प दिखाए, लेकिन कुछ विकल्प जहां दिखाए गए नहीं .. वे जहां चयन योग्य, लेकिन बस खाली। सुझाए गए विकल्पों में बाध्यकारी विकल्प को हल करने में समस्या हल हो गई है। धन्यवाद! – CodeHacker