Knockout Validation и Qtip

В настоящее время я использую JQuery Validation и Qtip вместе, чтобы иметь дело с фактической проверкой и отображением информации на экране с помощью приятных уведомлений в стиле всплывающей подсказки при ошибках проверки с использованием компонента errorPlacement параметров проверки.

В настоящее время каждая модель представления имеет свой собственный метод для настройки и запуска проверки и обратных вызовов, однако я пытался найти более приятный способ сделать это, будь то добавление настраиваемой привязки для настройки моих правил проверки через данные -bindings или альтернативным способом, но по-прежнему дает те же результаты (т.е. errorPlacement запускается, когда возникает ошибка проверки, и сообщает 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, });
    };
}

В настоящее время я уверен, что могу устранить необходимость в методе правил проверки, добавив настраиваемую привязку, чтобы я мог установить проверку в привязке данных, однако, если возможно, я хотел бы использовать такой же подход обратного вызова с существующей привязкой Knockout-Validation.

5
задан Sathish Naga 3 August 2012 в 21:14
поделиться