В настоящее время я использую JQuery Validation и Qtip, чтобы справиться с фактической проверкой и отображением информации на экране с помощью уведомлений о стиле приятных всплывающих подсказок при ошибках проверки с использованием компонента errorPlacement параметров проверки.Проверка нокаута и Qtip
В настоящее время каждый viewModel имеет свой собственный настраиваемый метод для настройки и отмены проверки и обратных вызовов, однако я старался найти более удобный способ сделать это: добавление пользовательской привязки для настройки моих правил проверки с помощью привязки данных или альтернативный способ, но при этом дают одинаковые результаты (т. е. ошибка возникает при возникновении ошибки проверки и сообщает Qtip отображать ошибку для данного элемента).
Теперь, прежде чем я начал делать сам, я только что проверил его и нашел Knockout Validation, который, как мне казалось, был отличной идеей, я мог применить свою логику проверки непосредственно к данным в моей модели viewModel, а затем просто найти какой-то обратный вызов для получить Qtip, чтобы начать, однако, похоже, нет обратного вызова, который я могу найти документально. Кажется, что библиотека делает все, что я хочу, для проверки стороны вещей, а не для отображения стороны вещей. Я просмотрел исходный код и примеры, но не мог видеть ничего, кроме ko.validation.group (viewModel), который дал бы мне наблюдаемый, содержащий ошибки, но я не уверен, могу ли я использовать его так же, как и я ожидая.
Вот пример того, как происходит моя текущая проверка:
/*globals $ ko */
function SomeViewModel() {
this.SetupValidation = function() {
var formValidationOptions = {
submitHandler: self.DoSomethingWhenValid,
success: $.noop,
errorPlacement: function (error, element) {
if (!error.is(':empty'))
{ qtip.DoSomethingToDisplayValidationErrorForElement(element, error); }
else
{ qtip.DoSomethingToHideValidationErrorForElement(element); }
}
};
$(someForm).validate(formValidationOptions);
this.SetupValidationRules();
};
this.SetupValidationRules = function() {
$(someFormElement1).rules("add", { required: true, minlength: 6, maxlength: 20, alphaNumeric: true });
$(someFormElement2).rules("add", { required: true, minlength: 6, maxlength: 20 });
$(someFormElement3).rules("add", { required: true, email: true, });
};
}
В настоящее время я уверен, что могу устранить необходимость в методе правил проверки, добавив пользовательские привязки, так что я могу установить проверку в данных -bind, однако, если возможно, я хотел бы использовать такой же подход обратного вызова с существующей привязкой к нокауту-валидации.
Свойство isValid может указывать на то, что что-то пошло не так, но мне нужен элемент, с которым связаны данные с ошибками, поэтому я могу отображать всплывающие подсказки, без элементов, которые я не могу сделать много. – Grofit
Следовательно, необходимость в настраиваемой привязке, вы можете поместить это в элемент, к которому вы хотите применить QTip, а затем можете обрабатывать подписку на свойство isValid. – madcapnmckay
Мне не нравится подход бросать пользовательские привязки при любой проблеме, но это похоже на достойный способ решить проблему. В настоящее время я только что изменил библиотеку проверки нокаута, чтобы добавить наблюдаемый к выходу метода group(), а также привязал к нему каждый связанный элемент наблюдаемых при его проверке, чтобы дать мне доступ, НО я могу изменить его, чтобы использовать подход, подобный вашему своя. Большое спасибо за пример! – Grofit