Obecnie używam walidacji Jquery Validation i Qtip razem, aby poradzić sobie z faktycznym sprawdzaniem poprawności i wyświetlaniem informacji na ekranie za pomocą powiadomień o stylu powiadomień po błędach sprawdzania poprawności za pomocą składnika errorPlacement opcji sprawdzania poprawności.Sprawdzanie poprawności Knockout i Qtip
Obecnie każdy model viewModel ma własną niestandardową metodę konfiguracji i uruchamiania sprawdzania poprawności i wywołań zwrotnych, jednak starałem się uzyskać lepszy sposób robienia tego, czy to dodawanie niestandardowego powiązania, aby skonfigurować moje reguły sprawdzania poprawności przez powiązań danych lub w inny sposób, ale nadal daje takie same wyniki (np. błąd jest wyzwalany, gdy pojawia się błąd sprawdzania poprawności i mówi Qtip, aby wyświetlał błąd dla danego elementu).
Teraz zanim zacząłem je tworzyć, właśnie sprawdziłem online i znalazłem Knockout Validation, który początkowo uważałem za świetny pomysł. Mogę zastosować moją logikę walidacji bezpośrednio do danych w moim viewModelu, a następnie znaleźć jakieś wywołanie zwrotne do spraw, aby Qtip się uruchomił, ale wygląda na to, że nie ma żadnego odwołania, które można udokumentować. Wydaje się, że biblioteka robi wszystko, co chcę, po stronie sprawdzania poprawności, po prostu nie po stronie wyświetlania. Przejrzałem kod źródłowy i przykłady, ale nie widziałem niczego poza ko.validation.group (viewModel), co dałoby mi możliwość zaobserwowania zawierającego błędy, ale nie jestem pewien, czy mógłbym użyć tego w taki sam sposób jak ja przy nadziei.
Oto przykład jak mój obecny walidacja dzieje:
/*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, });
};
}
Obecnie jestem pewien, że mogę usunąć potrzebę metody reguły poprawności dodając zwyczaj wiązania więc mogę ustawić walidacji w danych -indywidualnie, ale jeśli to możliwe, chciałbym użyć tego samego sposobu wywołania zwrotnego z istniejącym wiązaniem Knockout-Validation.
Właściwość isValid może oznaczać, że coś poszło nie tak, ale potrzebuję elementu, do którego są przypisane dane z błędami, dzięki czemu mogę wyświetlać podpowiedzi, bez elementów, których nie mogę wiele zrobić. – Grofit
Stąd potrzeba niestandardowego powiązania, możesz umieścić to na elemencie, który chcesz zastosować QTip do, a następnie może obsłużyć subskrypcję właściwości isValid. – madcapnmckay
Nie podoba mi się podejście polegające na rzucaniu niestandardowych wiązań przy każdym problemie, ale wydaje się, że jest to dobry sposób na rozwiązanie problemu. Obecnie właśnie zmieniłem bibliotekę sprawdzania poprawności nokautu w celu dodania możliwego do zaobserwowania wyniku dla metody group(), a także dołączałem do niej każdy obserwowalny element związany z jego weryfikacją, aby umożliwić mi dostęp, ALE mogę go zmienić, aby zastosować podejście podobne do twojego posiadać. Wielkie dzięki za przykład! – Grofit