वर्तमान में मेरे पास दो नॉकआउट एक्सटेंशन फ़ंक्शन हैं। एक पर्यवेक्षक को एक सदस्य जोड़ता है जबकि दूसरा पढ़ने और लिखने के कार्यों को रोकता है।नॉकआउट एक्सटेंशन में बनाए गए कस्टम गुणों को संरक्षित करने के लिए एक अच्छा पैटर्न क्या है?
विस्तार विधियों को संयोजित करते समय एप्लिकेशन के आदेश का अवांछित प्रभाव होता है।
नीचे सरलीकृत कोड उदाहरण।
ko.extenders.format = function(target) {
var result = ko.computed(function(){
return "$" + target();
});
target.formatted = result;
return target;
};
ko.extenders.numeric = function(target, precision) {
var result = ko.computed({
read: function() {
var current = parseFloat(target());
return current.toFixed(precision);
},
write: function(newValue) {
newValue = parseFloat(newValue);
target(newValue.toFixed(precision));
}
});
return result;
};
संख्यात्मक विधि मैं स्वरूपित सदस्य के लिए जाँच करें और नई गणना के लिए असाइन करें लेकिन मैं इसे अन्य विधि का ज्ञान देने के लिए नहीं करना चाहते हैं
। अगर मैं अवलोकन या एक्सटेंशन से अधिक सदस्यों को जोड़ने का फैसला करता हूं तो यह भी बनाए रखा नहीं जा सकता है।
if(target.hasOwnProperty("formatted")){
result.formatted = target.formatted;
}
हैऑनप्रॉपर्टी फिक्स के बिना एक बेवकूफ़ है। http://jsfiddle.net/gs5JM/2/
ध्यान दें कि MyValue4 - प्रारूप: विस्तारक आवेदन के आदेश और स्वरूपित सदस्य के नुकसान के कारण खाली है।
क्या एक ही अंतिम परिणाम प्राप्त करने और कोड को अधिक लचीला बनाने के लिए एक बेहतर पैटर्न है?
प्रतिक्रिया के लिए धन्यवाद। मुझे पता नहीं था कि एक अज्ञात ko.computed इस तरह से काम करेगा, लेकिन यह समझ में आता है। –
यह एक लिखने विधि के साथ अवलोकन और गणना वाले क्षेत्रों के लिए बहुत अच्छा काम करता है, लेकिन जब यह केवल एक पठन विधि के साथ गणना की जाती है तो विफल हो जाती है। शुरुआती संख्यात्मक विस्तारक में मैंने एक पठन और लेखन कार्य दोनों शामिल किए थे, इसलिए मैं इसे दोनों परिदृश्यों में उपयोग कर सकता था। क्या आपके पास कोई सुझाव है यदि यह एक लिखने योग्य देखने योग्य नहीं है? –
यह बहुत ही अजीब परिदृश्य होगा जब आपको केवल पढ़ने योग्य अवलोकनों में लिखने के लिए एक विस्तारक की आवश्यकता होती है। क्या आप विवरण में समझा सकते हैं? –