Для этого я бы использовал два разных валидатора на стороне сервера, так как они влияют на различные наблюдаемые в модели представления.
Первоначально взяты из knockout validation 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, где вы выполняете свой поиск, а затем возвращает истину или ложь в зависимости от результата запроса.
Чтобы использовать вышеописанный валидатор
this.email = ko.observable()
.extend({
isEmailUnique: {
message: 'Something else perhaps? It will override the message in the validator'
}
});
Вы можете использовать ту же самую вещь для проверки прочности пароля.
Использование валидаторов, как это, приведет к проверке проверки, когда наблюдаемые изменения, которые могут быть полезным способом проверки.
Я видел это сообщение в своем readme, но мне бы очень хотелось, чтобы все проверки на стороне сервера отправлялись с одним вызовом. Если регистрация прекрасна, вернитесь назад, верните те вещи, которые были неправильными. – NPehrsson
В этом случае вы, вероятно, не должны использовать плагин проверки вообще для этого конкретного случая. Просто отправьте данные, которые вы хотите сохранить, и позаботьтесь о результатах. Если вы хотите поместить сообщения об ошибках рядом с полем, вызвавшим ошибку, вы должны определить для этого соглашение. Возможно, некоторые вычисленные наблюдаемые данные могут фильтровать проверку json или что-то, к чему вы можете привязать. Однако проверка нокаута не может помочь вам. –
:(okeay, я хотел использовать другие вещи по мере необходимости и т. Д. Таким образом, нет возможности «запускать» ошибку проверки, когда я получаю результат с сервера? – NPehrsson