Tôi đang cố gắng sử dụng knockout validation lib để xác thực một mảng đối tượng. Nó không phải là đơn giản đối với tôi làm thế nào để tạo thành một nhóm xác nhận cho một loạt các quan sát. Cách duy nhất tôi quản lý để làm cho nó hoạt động giống như thế này (JSFIDDLE included):Làm cách nào để xác thực một mảng?
var Note = function() {
var self = this;
self.name = ko.observable().extend({ required: true });
};
var viewModel = function() {
var self = this;
self.notes = ko.observableArray([new Note(), new Note()]);
self.validatedObservables = function() {
var arr = [];
ko.utils.arrayForEach(self.notes(), function(note) {
arr.push(note.name);
});
return arr;
};
self.errors = ko.validation.group(self.validatedObservables());
self.submit = function() {
if (self.errors().length != 0) {
self.errors.showAllMessages();
}
};
};
ko.applyBindings(new viewModel());
Dường như cách tiếp cận của tôi là không cần thiết tiết. Theo mã nguồn, bạn có thể chỉ cần chuyển một quan sát tới ko.validation.group:
self.errors = ko.validation.group(self.notes());
Nhưng điều này không hiệu quả.
Tuyệt vời, người đàn ông, bạn đã lưu là một ngày! Chỉ còn một điều nữa. Nó hoạt động tốt, nhưng nếu bạn thêm một thể hiện khác vào một mảng sau, nó không được bao gồm trong nhóm. [Có một cái nhìn tại fiddle này] (http://jsfiddle.net/KHFn8/340/) – Dziamid
Những gì tôi thích về loại trực tiếp là nó không có ma thuật mà đứng trên con đường của bạn. Một lần nữa, tôi đã giải quyết được vấn đề của mình. Mã này là tiết nhưng hoạt động - các mục được thêm động được thêm vào để xác thực. [Fiddle] (http://jsfiddle.net/KHFn8/344/). – Dziamid
-1: Fiddle này không thực hiện bất kỳ xác thực nào. –