2013-06-15 11 views

答えて

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

いいえ、エクステンダー自体が変更を元に戻す方法を提供しない限り、エクステンダーを削除することはできません。 koバリデーションの場合、 '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

関連する問題