Tôi hiện đang sử dụng Xác thực Jquery và Qtip để xử lý xác thực và hiển thị thông tin trên màn hình bằng cách sử dụng thông báo kiểu công cụ đẹp mắt khi lỗi xác thực sử dụng thành phần errorPlacement của các tùy chọn xác thực.Xác nhận Knockout và Qtip
Hiện tại mỗi chế độ xemModel có phương thức tùy chỉnh riêng để thiết lập và khởi động xác thực và gọi lại, tuy nhiên tôi đang cố gắng xem xét cách thực hiện tốt hơn, có thể thêm ràng buộc tùy chỉnh để thiết lập quy tắc xác thực của tôi qua ràng buộc dữ liệu hoặc một cách khác, nhưng vẫn cho kết quả tương tự (tức là errorPlacement được kích hoạt khi lỗi xác thực xảy ra và cho Qtip hiển thị lỗi cho phần tử đã cho). Bây giờ trước khi tôi bắt đầu làm một bản thân mình, tôi chỉ cần kiểm tra trực tuyến và tìm thấy Knockout Validation, mà ban đầu tôi nghĩ là một ý tưởng tuyệt vời, tôi có thể áp dụng logic xác thực của mình trực tiếp vào dữ liệu trong viewModel của tôi và sau đó chỉ cần tìm một số loại gọi lại nhận được Qtip để kick in, tuy nhiên có vẻ như không có callback mà tôi có thể tìm thấy tài liệu. Thư viện dường như làm mọi thứ tôi muốn cho mặt xác thực của mọi thứ, không chỉ cho khía cạnh hiển thị của mọi thứ. Tôi đã xem qua mã nguồn và các ví dụ nhưng không thể thấy bất kỳ điều gì khác ngoài ko.validation.group (viewModel), điều này sẽ cho tôi một lỗi có thể quan sát được, nhưng tôi không chắc liệu tôi có thể sử dụng cách này giống như tôi mong đợi.
Dưới đây là một ví dụ về cách xác nhận hiện tại của tôi xảy ra:
/*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, });
};
}
Tôi hiện chắc chắn tôi có thể loại bỏ sự cần thiết của phương pháp quy tắc xác nhận bằng cách thêm một ràng buộc để tôi có thể thiết lập xác nhận trong các dữ liệu tùy chỉnh -bind, tuy nhiên nếu có thể tôi muốn sử dụng cùng một loại phương thức gọi lại với ràng buộc Knockout-Validation hiện có.
Thuộc tính isValid có thể cho biết đã xảy ra sự cố, nhưng tôi cần phần tử dữ liệu có lỗi bị ràng buộc để tôi có thể hiển thị chú giải công cụ. – Grofit
Do đó sự cần thiết cho một ràng buộc tùy chỉnh, bạn có thể đặt điều này vào yếu tố bạn muốn áp dụng QTip và sau đó nó có thể xử lý đăng ký tài sản isValid. – madcapnmckay
Tôi không thích cách tiếp cận của việc ném các ràng buộc tùy chỉnh vào bất kỳ vấn đề nào, nhưng điều này dường như là một cách tốt để giải quyết vấn đề. Hiện tại, tôi vừa thay đổi thư viện xác nhận loại bỏ để thêm quan sát vào đầu ra của phương thức nhóm() và cũng đã gắn kết từng phần tử quan sát được với nó khi nó xác nhận để cho tôi truy cập, NHƯNG tôi có thể thay đổi nó để sử dụng cách tiếp cận tương tự như của bạn sở hữu. Cảm ơn rất nhiều cho ví dụ! – Grofit