Javascript 当需要使用时,敲除验证ValidateObservable始终有效:{onlyIf:…}

Javascript 当需要使用时,敲除验证ValidateObservable始终有效:{onlyIf:…},javascript,validation,knockout.js,single-page-application,knockout-validation,Javascript,Validation,Knockout.js,Single Page Application,Knockout Validation,我正在我的项目中使用。 我有一个模型,如果问题回答为“是”,我需要确保提供详细信息: function Model() { 'use strict'; var self = this; self.question1 = ko.observable(false); self.question1Details = ko.observable(''); self.question1Details.extend({ required: {

我正在我的项目中使用。 我有一个模型,如果问题回答为“是”,我需要确保提供详细信息:

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有问题,或者我用错了

var self=this;
self.question1 = ko.observable(false);
self.question1Details = ko.observable('');
self.question1Details.extend({
    required: {
        onlyIf: function () { return self.question1()===true;}
     }
});

对不起,这把小提琴坏了。但这似乎是一个答案。但是,如果我只想在我的问题答案为真的情况下才需要这个字段,为什么它是假的呢?我不明白。实际上不,它不太管用。现在它总是无效。对不起,我弄错了,我已经更新了小提琴,现在它按预期工作。你有没有弄明白这个?我现在正在处理这个问题。