2012-09-07 17 views
7

में बाइंडिंग को दोबारा शुरू करें मैं मूल रूप से विभिन्न वस्तुओं के लिए एक ही पृष्ठ पर बाइंडिंग को फिर से लागू करना चाहता हूं, लेकिन अजीब व्यवहार है। बाध्यकारी पुन: लागू करने के बाद, वस्तुओं की सूची खो जाती है।नॉकआउट

कृपया यहाँ देखें: http://jsfiddle.net/baio/9UcUs/5/

क्या करें?

+0

यह आपके द्वारा सीधे पूछे जाने वाले एवर नहीं हो सकता है लेकिन नॉकआउट के साथ एक और मानक दृष्टिकोण आपके व्यू मॉडल को बांधना है और फिर प्रत्येक मॉडल को बदलने के बजाय मॉडल की सामग्री को बदलना है। उदाहरण के लिए http://jsfiddle.net/9UcUs/8/ देखें। –

+0

प्रासंगिक कोड हमेशा *** *** प्रश्न में होना चाहिए, न केवल लिंक (यहां तक ​​कि jsFiddle भी नहीं)। –

उत्तर

6

संक्षिप्त उत्तर यह है कि यह समर्थित नहीं है। लंबा जवाब यह है कि इसके आसपास कुछ तरीके हैं। applyBindings से पहले cleanNode पर कॉल करना एक तरीका है, लेकिन यह ईवेंट हैंडलर को साफ़ नहीं करता है। एक और तरीका है कि अपने व्यू मॉडल को एक अवलोकन में लपेटें और उसके बाद बाइंडिंग को फिर से लागू करने के लिए देखे जा सकें; यह बहुत बेहतर काम करता है, लेकिन अभी भी एक मामूली समस्या है (नीचे देखें)। http://jsfiddle.net/mbest/9UcUs/9/

समस्या सिर्फ मैं एक नमूदार दृश्य मॉडल का उपयोग कर के साथ पाया है कि ईवेंट हैंडलर्स पूरी तरह से नया दृश्य मॉडल के साथ अद्यतन नहीं कर रहे हैं:

यहाँ नमूदार दृश्य मॉडल पद्धति का उपयोग करके अपने उदाहरण है। वे नए दृश्य मॉडल में सही फ़ंक्शन को कॉल करेंगे, लेकिन this और data मान मूल दृश्य मॉडल के लिए होंगे।

संपादित करें:

नॉकआउट 3.0 (वर्तमान में इस महीने रिलीज के लिए निर्धारित) पूरी तरह से समर्थन करता है नमूदार दृश्य मॉडल। कस्टम बाइंडिंग के साथ अभी भी समस्याएं हो सकती हैं, लेकिन उम्मीद है कि यह सब जल्द ही दस्तावेज किया जाएगा।

4

आप एक ही व्यूमोडेल को विभिन्न तत्वों से जोड़ सकते हैं, आपको उस तत्व को निर्दिष्ट करने की आवश्यकता है जिसे आप अपनी बाध्यकारी लागू करना चाहते हैं।

ko.applyBindings(vm, $('#yourul')); 

ko.applyBindings(vm, $('#div')); 
+6

याद रखें कि नॉकआउट jQuery निर्भर नहीं है: '$ ('# yourul') [0]' और '$ ('# div') [0]' का उपयोग करें –

0

कर:

ko.applyBindings(viewModel, $('#somejQObj')[0]); 

वर्क्स के रूप में @ fengd के जवाब की टिप्पणी में कहा गया है। वर्तमान में एक सारणी है जो फ़ोरैच स्टेटमेंट द्वारा पॉप्युलेट की गई है, जिसमें विस्तार योग्य पंक्तियां हैं जिनमें प्रत्येक के पास गतिशील रूप से जोड़ा गया उप-तालिका है जो कि फ़ोरैच स्टेटमेंट द्वारा भी पॉप्युलेट किया जाता है। प्रत्येक उप-तालिका गतिशील रूप से डालने के बाद उपरोक्त तालिका के लिए बाइंडिंग सेट करता है और डेटा को पॉप्युलेट करता है।