Я бы использовал для этого два разных валидатора на стороне сервера, так как они влияют на разные наблюдаемые в модели представления.
Изначально взято из 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'
};
Затем на сервере вам нужно создать конечную точку, которая будет принимать запросы POST, когда вы выполняете поиск, а затем возвращать true или false в зависимости от результата запроса.
Для использования вышеуказанного валидатора
this.email = ko.observable()
.extend({
isEmailUnique: {
message: 'Something else perhaps? It will override the message in the validator'
}
});
Вы можете использовать то же самое для проверки надежности пароля.
Использование таких валидаторов запускает валидацию, когда наблюдаемые изменения изменяются, что может быть полезным способом валидации.