Knockout-Validation validatedObservable在使用时始终有效:{onlyIf:...}

时间:2014-03-12 04:20:48

标签: javascript validation knockout.js single-page-application knockout-validation

我在我的项目中使用Knockout-Validation。 我有模型,如果qustion回答为是,我需要确保提供详细信息:

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
            }
        });

比它工作正常。所以我怀疑只有一些问题,或者我使用它是错误的。

1 个答案:

答案 0 :(得分:1)

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

Fiddle Demo