Я использую Knockout-Validation в своем проекте. У меня есть модель, в которой мне нужно убедиться, что детали предоставлены, если на вопрос ответили «да»:
function Model() {
'use strict';
var self = this;
self.question1 = ko.observable(false);
self.question1Details = ko.observable('');
self.question1Details.extend({
required: {
onlyIf: function () {
return self.question1() === true;
}
}
});
}
Чем я использую это так:
var model = ko.validatedObservable(new Model());
Но что бы я ни делал, model.isValid() всегда верен. Даже если model().question1Details.isValid() имеет значение false.
Я попытался указать
ko.validation.init({ grouping : { deep: true, observable: true }, insertMessages:true }, true);
Но это не помогло.
Интересно, если я изменю правило проверки на:
self.question1Details.extend({
required: true
}
});
чем работает нормально. Поэтому я подозреваю, что есть какая-то проблема с onlyIf или я использую его неправильно.