2013-06-15 18 views

Odpowiedz

32

Można usunąć wszystkie walidacji dotyczy właściwości tworzą obserwowalne, które zostały dodane przez walidacji ko z numerem:

myObservable.extend({validatable: false}); 

Albo jeśli chcesz tylko usunąć wymaganej walidacji można go usunąć z kolekcji rules :

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

Demo JSFiddle.

Ale walidacja ko posiada wsparcie dla conditional validation, więc można określić pewne warunki, gdy walidacja powinna działać tak, może to jest to, czego potrzebujesz:

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

JedynyJeśli to było dokładnie to, czego potrzebowałem, ale co z tym, o co poprosiłem o usunięcie przedłużacza? Czy to jest wspierane przez nokaut? –

+2

Nie, nie można usunąć wzmacniacza, chyba że sam wzmacniacz zapewnia sposób "przywrócenia" własnych zmian. W przypadku sprawdzania ko: wywołanie 'myObservable.extend ({validatable: false});' to właśnie to powoduje usunięcie wszystkich rzeczy związanych z walidacją, które zostały dodane przez '.extend ({required: true}); dowolna z pozostałych zasad. – nemesv

+0

myObservable.rules.remove .. dobry! – JMGH

2

nemesv odpowiedź pracuje z niewielką korektą typo - funkcja w remove (...) wezwanie powinna zwrócić wartość logiczną (czyli '==' zamiast '='):

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

Demo: JSFiddle