नॉकआउट 2.0 में दो कार्य हैं जिनका आप इस उद्देश्य के लिए उपयोग कर सकते हैं। ko.dataFor
और ko.contextFor
एक नोड में लेने के लिए और या तो नॉकआउट डेटा है कि कि गुंजाइश (contextFor) है, जो $data
, $parent
, $parents
, और $root
शामिल पर कि गुंजाइश (dataFor) या पूरे बंधन संदर्भ में बांधने के लिए यह करने के लिए उपलब्ध होगा लौटने।
तो, आप की तरह कुछ कर सकते हैं: http://jsfiddle.net/rniemeyer/GaqGY/
हालांकि, एक सामान्य स्थिति में आप वास्तव में ko.applyBindings
अपने पृष्ठ पर एक ही समय कॉल करने के लिए दिखना चाहिए:
var isBound = function(id) {
return !!ko.dataFor(document.getElementById(id));
};
यहां एक नमूना है। यह इस बात पर निर्भर करता है कि आप क्या हासिल करने की कोशिश कर रहे हैं। एकाधिक दृश्य मॉडल प्रबंधित करने के तरीकों पर कुछ सुझावों के लिए इस उत्तर पर एक नज़र डालें: Example of knockoutjs pattern for multi-view applications।
आमतौर पर, आप <div data-bind="with: mySubModel">
करेंगे और जब mySubModel
पॉप्युलेट हो जाता है तो वह क्षेत्र दिखाई देगा और बाध्य होगा।
स्रोत
2012-01-17 14:24:42
शानदार उत्तर। धन्यवाद। – Chin
हाय, @ आरपीएन, उपरोक्त आईबाउंड फ़ंक्शन पूरी तरह से सुरक्षित नहीं है। ऐसा इसलिए है क्योंकि केओ के बाद खुद को unbinds ko.dataFor (...) संग्रहीत डेटा को वापस जारी रखता है। यह पहेली देखें: http://jsfiddle.net/nabog/6hCfM/6/ –
@ नोएल अब्राहम - वास्तव में उस मामले में नॉकआउट वास्तव में "अनबिंड" नहीं होता है। यह पहचानता है कि तत्व दस्तावेज का हिस्सा नहीं है और गणना किए गए अवलोकन योग्य का उपयोग नहीं करता है जिसका प्रयोग तत्व की बाइंडिंग की निर्भरताओं को ट्रैक करने के लिए किया जाता है। इसका मतलब है कि बाध्यकारी आगे अपडेट नहीं होगा, लेकिन यह नहीं कि यह अनबाउंड है। यदि आप वास्तव में किसी तत्व से केओ को हटाना चाहते हैं, तो आपको 'ko.cleanNode' को कॉल करने की आवश्यकता है जो इसे अपने डेटा को स्ट्रिप करेगा (हालांकि यह किसी भी ईवेंट हैंडलर को नहीं हटाएगा)। यहां एक नमूना है: http://jsfiddle.net/rniemeyer/6hCfM/7/ –