2012-11-15 14 views
8

मेरे पास ko.observable आइटम पर सत्यापन के साथ है। उपयोगकर्ता हटाए गए आइटम को चिह्नित कर सकता है। जब इसे हटाए गए के रूप में चिह्नित किया जाता है, तो मुझे उस आइटम पर सत्यापन अक्षम करने की आवश्यकता होती है।नॉकआउट प्रमाणीकरण अक्षमता

आप गतिशील रूप से सत्यापन को कैसे अक्षम करते हैं?

उदाहरण: http://jsfiddle.net/3RZjT/2/

<div data-bind="foreach: names"> 
    <input data-bind="value: name, valueUpdate: 'afterkeydown'" /> <a data-bind="click: deleteMe, text:deleted()?'undelete':'delete'" href="#">delete</a><br/> 
</div> 

function Person(name){ 
    var self = this; 
    self.name = ko.observable(name).extend({ required: true}); 
    self.deleted = ko.observable(false); 
    self.deleteMe = function(){ 
     self.deleted(!self.deleted()); 
     self.deleted.extend({ validatable: !self.deleted()}); 
    }; 
} 

var viewModel = { 
    names: ko.observableArray([new Person("Ken"), new Person("")]) 
}; 

ko.applyBindings(viewModel); 
+1

कृपया अपने वर्तमान कोड शामिल हैं। – Tomalak

+0

मेरे पास वास्तव में कोई प्रयास नहीं है क्योंकि मुझे नहीं पता कि क्या प्रयास करना है। मैंने @Anders उत्तर का उपयोग करके एक उदाहरण के साथ अद्यतन किया है, लेकिन यह मेरे लिए काम नहीं करता है। – Homer

+0

आपको 'self.name.extend ({validatable:! Self.deleted()}) लिखना चाहिए;' आपके 'deleteMe' फ़ंक्शन में। – nemesv

उत्तर

9

अद्यतन पुराना जवाब मान्यता के नॉकआउट-योगदान संस्करण के लिए मान्य नहीं है (सक्रिय विकास के साथ शाखा Thats)

https://github.com/Knockout-Contrib/Knockout-Validation

उपयोग onlyIf विकल्प

this.enable = ko.observable(true); 
this.required = ko.observable().extend({ required: { onlyIf: this.enable } }); 

पुराना जवाब

प्रयास करें

this.property.extend({ validatable: false }); // disables all validation for property 

या

this.property.extend({ required: false }); // disables required validation for property 
+0

यह काम नहीं किया। मैंने अपने प्रश्न को एक उदाहरण और जेएसफ़ील्ड के साथ अपडेट किया है। – Homer

+0

टिकट दर्ज करें, इसे https://github.com/ericmbarnard/Knockout-Validation/issues/101 – Anders

+0

मेरे कोड में एक बग, काम करना चाहिए। अगर इसे ठीक किया गया है और यह अब अक्षम हो जाएगा, लेकिन यह फिर से सक्षम नहीं होगा। – Homer

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