2013-06-15 13 views

risposta

32

È possibile rimuovere tutta la convalida si riferisce proprietà formano un osservabile che sono stati aggiunti dalla convalida ko con chiamando:

myObservable.extend({validatable: false}); 

Oppure, se si desidera rimuovere solo la convalida richiesta è possibile rimuoverlo dalla collezione rules :

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

Demo JSFiddle.

Ma la convalida ko ha il supporto per conditional validation, in modo da poter specificare alcune condizioni, quando la convalida dovrebbe funzionare così forse questo è quello che vi serve:

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

l'unico problema era esattamente quello di cui avevo bisogno, ma per quanto riguarda ciò che ho chiesto sulla rimozione dell'extender? È supportato da knockout? –

+2

No, non è possibile rimuovere un extender a meno che l'extender stesso non fornisca un modo per "annullare" le proprie modifiche. Nel caso della convalida ko la chiamata 'myObservable.extend ({validatable: false});' effettua esattamente questa operazione rimuove tutte le informazioni relative alla validazione che sono state aggiunte da '.extend ({required: true});' oppure una qualsiasi delle altre regole. – nemesv

+0

myObservable.rules.remove .. buono! – JMGH

2

nemesv risposta funziona con una piccola correzione errore di battitura - la funzione nel remove (...) chiamata dovrebbe restituire un valore booleano (cioe '==' invece che '='):

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

Demo: JSFiddle

Problemi correlati