これには、ビュー モデル内のさまざまなオブザーバブルに影響するため、2 つの異なるサーバー側バリデーターを使用します。
ノックアウト検証の readmeから引用
ko.validation.rules['isEmailUnique'] = {
validator: function(val, param){
var isValid = true;
$.ajax({
async: false,
url: '/validation/isEmailUnique',
type: 'POST',
data: { value: val, param: param },
success: function(response){
isValid = response === true;
},
error: function(){
isValid = false; //however you would like to handle this
}
});
return isValid;
},
message: 'The Email is not unique'
};
次に、サーバーで、ルックアップを実行し、クエリの結果に応じて true または false を返す POST 要求を受け入れるエンドポイントを作成する必要があります。
上記のバリデータを使用するには
this.email = ko.observable()
.extend({
isEmailUnique: {
message: 'Something else perhaps? It will override the message in the validator'
}
});
パスワード強度の検証にもまったく同じものを使用できます。
このようなバリデーターを使用すると、オブザーバブルが変更されたときに検証が開始されます。これは、検証を行うのに便利な方法です。