Я пытаюсь использовать knockout validation lib для проверки массива объектов. Мне нелегко, как сформировать группу валидации для массива наблюдаемых. Единственный способ, которым я сумел заставить его работать, как это (JSFIDDLE included):Как проверить массив?
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());
Похоже, что мой подход является излишне многословным. В соответствии с исходным кодом, вы можете просто передать наблюдаемым в ko.validation.group:
self.errors = ko.validation.group(self.notes());
Но это не работает.
Отлично, человек, вы спаслись за день! Есть еще одна вещь. Он отлично работает, но если вы добавите еще один экземпляр в массив позже, он не будет включен в группу. [Взгляните на эту скрипку] (http://jsfiddle.net/KHFn8/340/) – Dziamid
Что мне нравится в нокауте, так это то, что у него нет магии, которая стоит на вашем пути. Опять же, я решил свою проблему. Код является подробным, но работает - динамически добавленные элементы теперь добавляются к проверке. [Фидл] (http://jsfiddle.net/KHFn8/344/). – Dziamid
-1: Эта скрипка не делает никакой проверки. –