ko.validation.group unexpected null entry
I try to get array of errors from my observableArray elements The problem is that if you enter both invalid values, null appears in ko.validation.group(self.rows, { deep: true, observable: true }); I found that null comes from self.rows.isValid(), but I didn't set any validator on observableArray itself.
by Tomek
HTML
<script src="https://raw.github.com/SteveSanderson/knockout/master/build/output/knockout-latest.debug.js"></script>
<script src="https://raw.github.com/ericmbarnard/Knockout-Validation/master/Src/knockout.validation.js"></script>
Number of errors: <span data-bind="text: errors().length"></span>
<!-- ko foreach: rows -->
<hr/>
<input data-bind="value: numbers[0]"/><br/>
<input data-bind="value: numbers[1]"/><br/>
<input data-bind="value: numbers[2]"/><br/>
<!-- /ko -->
CSS
input{
width: 2em;
}
JavaScript
(function(){
function makeObservable(el){return ko.observable(el);}
function Row(){
var self = this;
//create array of observable numbers
self.numbers = ko.utils.arrayMap([1,2,3], makeObservable);
function addValidators(el){
return el.extend({
unique : {collection: self.numbers, valueAccessor: ko.utils.unwrapObservable}
});
}
//attach validation to observables
ko.utils.arrayMap(self.numbers, addValidators);
}
function VM (){
var self = this;
this.rows = ko.observableArray([new Row()]);
self.errors = ko.validation.group(self.rows, { deep: true, observable: true });
self.errors.subscribe( function(){console.log(self.errors());});
}
ko.applyBindings( window.vm= new VM() );
}());