2013-06-15 7 views
18

मैं नॉकआउट मान्यकरण प्लगइन का उपयोग कर रहा है और स्थापित करने के लिए एक नमूदार एक्सटेंडर का उपयोग कर के रूप में आवश्यक:मौजूदा पर्यवेक्षण से विस्तारक को कैसे निकालें?

myObservable.extend({required:true}); 

क्या यह संभव है मुझे इसे जोड़ने के बाद एक्सटेंडर को दूर करने के लिए?

उत्तर

32

आप सभी मान्यता को हटा सकते हैं संबंधित गुण एक नमूदार जिसके साथ ko सत्यापन द्वारा जोड़ा गया था के रूप में बुला:

myObservable.extend({validatable: false}); 

या आप केवल आवश्यक सत्यापन निकालना चाहते हैं तो आप rules संग्रह से निकाल सकते हैं :

myObservable.rules.remove(function (item) { 
     return item.rule == "required"; 
    }); 
} 

डेमो JSFiddle

लेकिन ko सत्यापन conditional validation के लिए समर्थन हासिल है, इसलिए जब मान्यता तो शायद काम करना चाहिए कि आप कुछ शर्त निर्दिष्ट कर सकते हैं कि आप यही जरूरत है:

myObservable.extend({ 
    required: { 
     message: "Some message", 
     onlyIf: function() { return //some condition; } 
    } 
}); 
+0

केवल वही था जो मुझे चाहिए था, लेकिन विस्तारक को हटाने के बारे में मैंने क्या पूछा? क्या यह नॉकआउट द्वारा समर्थित है? –

+2

नहीं, आप एक विस्तारक को तब तक नहीं हटा सकते जब तक कि विस्तारक स्वयं अपने परिवर्तनों को "वापस" करने का तरीका प्रदान न करे। को सत्यापित करने के मामले में 'myObservable.extend ({validatable: false});' कॉल वास्तव में यह करता है कि यह सभी सत्यापन संबंधित सामग्री को हटा देता है जिसे'extend ({required: true}) द्वारा जोड़ा गया था; 'या अन्य नियमों में से कोई भी। – nemesv

+0

myObservable.rules.remove .. अच्छा एक! – JMGH

2

nemesv जवाब एक छोटी सी टाइपो सुधार के साथ काम करता है - समारोह निकालें में (...) कॉल एक बूलियन मान लौटाना चाहिए (यानी '==' के बजाय '='):

myObservable.rules.remove(function(item) { 
    return item.rule == "required"; 
}); 

डेमो: JSFiddle

संबंधित मुद्दे