2012-11-15 20 views
8

Ho ko.observableArray con convalida sugli articoli. L'utente può contrassegnare un elemento come cancellato. Quando viene contrassegnato come eliminato, devo disabilitare la convalida su quell'elemento.Convalida disabilitazione convalida disabilitazione

Come disabilitare la convalida in modo dinamico?

Esempio: 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

prega di inserire un codice attuale. – Tomalak

+0

Non ho davvero un tentativo perché non so cosa provare. Ho aggiornato con un esempio usando la risposta di @Anders, ma non ha funzionato per me. – Homer

+0

Dovresti scrivere 'self.name.extend ({validatable:! Self.deleted()});' nella tua funzione 'deleteMe'. – nemesv

risposta

9

Aggiornamento Vecchio risposta non valida per la versione Knockout-Contrib di convalida (Questo è il ramo con sviluppo attivo)

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

Utilizzare l'onlyIf opzione come

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

Vecchio risposta

Prova

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

o

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

Non ha funzionato. Ho aggiornato la mia domanda con un esempio e jsFiddle. – Homer

+0

Archivia un ticket, dovrebbe funzionare https://github.com/ericmbarnard/Knockout-Validation/issues/101 – Anders

+0

Opps, un bug nel mio codice. Se risolto, verrà disattivato ora, ma non verrà riattivato. – Homer

Problemi correlati