Estoy tratando de usar knockout validation lib para validar una matriz de objetos. No es sencillo para mí cómo formar un grupo de validación para una serie de observables. La única manera me las arreglé para hacer que funcione es así (JSFIDDLE included):¿Cómo validar una matriz?
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());
Parece que mi enfoque es innecesariamente prolijo. De acuerdo con el código fuente que puede simplemente pasar un observable a ko.validation.group:
self.errors = ko.validation.group(self.notes());
Pero esto no funciona.
Genial, hombre, ¡ahorraste un día! Solo hay una cosa más. Funciona bien, pero si agrega otra instancia a una matriz más tarde, no se incluye en el grupo. [Echa un vistazo a este violín] (http://jsfiddle.net/KHFn8/340/) – Dziamid
Lo que me gusta de los knockouts es que no tiene magia que se interponga en tu camino. Nuevamente, resolví mi problema. El código es detallado pero funciona: elementos añadidos dinámicamente ahora agregados a la validación. [Fiddle] (http://jsfiddle.net/KHFn8/344/). – Dziamid
-1: este violín no hace ninguna validación. –