मैंने नॉकआउटजेएस का उपयोग करके कुछ कस्टम बाइंडिंग लिखी हैं। मुझे अभी भी अनिश्चितता है कि ko.util.unwrapObservable(item)
का उपयोग करने के लिए कोड को देखते हुए, कॉल मूल रूप से यह देखने के लिए जांचता है कि item
एक अवलोकन योग्य है या नहीं। यदि ऐसा है, तो मान() को वापस करें, यदि यह नहीं है, तो बस मान वापस करें। कस्टम बाइंडिंग बनाने के बारे में नॉकआउट पर खंड को देखते हुए, वे निम्नलिखित वाक्य रचना है:ko.utils.unwrapObservable का उपयोग कब करें?
var value = valueAccessor(), allBindings = allBindingsAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
इस मामले में, वे ()
के माध्यम से नमूदार आह्वान लेकिन फिर भी ko.utils.unwrapObservable
कहते हैं। मैं बस एक बनाम दूसरे का उपयोग करने पर एक संभाल पाने की कोशिश कर रहा हूं या अगर मुझे हमेशा उपर्युक्त पैटर्न का पालन करना चाहिए और दोनों का उपयोग करना चाहिए।
तो क्या पैटर्न मैंने कस्टम बाइंडिंग के लिए आगे बढ़ने के लिए सबसे अच्छा अभ्यास पोस्ट किया है? – arb
यह वास्तव में स्थिति पर निर्भर करता है। कुछ कस्टम बाइंडिंग केवल अवलोकनों के साथ काम करने के लिए डिज़ाइन की गई हैं, इसलिए आप सामने (ko.isObservable) की जांच कर सकते हैं कि यह एक अवलोकन योग्य है और फिर आप इसे() के साथ खोलने के लिए स्वतंत्र होंगे। यदि आपको ऑब्जेक्ट प्राप्त हो रहा है जिसमें घोंसला वाले अवलोकन हो सकते हैं, तो आप ऑब्जेक्ट का अनचाहे संस्करण प्राप्त करने का प्रयास कर रहे हैं, तो आप 'ko.utils.unwrapObservable' का उपयोग करने के बजाय 'ko.toJS (yourObject)' करने से बेहतर हैं। एक विजेट या तृतीय पक्ष पुस्तकालय में जाने के लिए। आम तौर पर, अवलोकन और गैर-अवलोकनों का समर्थन करने के लिए 'ko.utils.unwrapObservable' का उपयोग करना सबसे सुरक्षित है। –
मुझे लगता है कि मैं उलझन में हूं कि 'ko.utils.unwrapObservable' का उद्देश्य क्या है। कोड को देखते हुए, यह देखने के लिए जांच करता है कि यह देखने योग्य है और यदि यह है, तो नॉकआउट अवलोकन योग्य मान प्राप्त करने के लिए '() 'को आमंत्रित करता है, अन्यथा, यह गैर-देखने योग्य के लिए मूल्य देता है। यदि मुझे दिलचस्पी है तो बाध्यकारी में पारित डेटा का मूल्य है, मैं हमेशा '()' का उपयोग क्यों नहीं कर सकता? – arb