【问题标题】:Knockout-Validation validatedObservable is always valid when use required:{onlyIf:...}Knockout-Validation 验证的Observable 在需要使用时始终有效:{onlyIf:...}
【发布时间】:2014-04-16 00:34:40
【问题描述】:

我在我的项目中使用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() 为假。

我试图指定

ko.validation.init({ grouping : { deep: true, observable: true }, insertMessages:true }, true);

但这并没有帮助。

有趣的事情,如果我将验证规则更改为:

self.question1Details.extend({
            required: true
            }
        });

比它工作正常。所以我怀疑 onlyIf 有问题,或者我用错了。

【问题讨论】:

  • 你有想过这个吗?我现在正在处理这个问题。

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


【解决方案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

【讨论】:

  • 对不起,这个小提琴不起作用。但这似乎是一个答案。但是,如果我希望仅在我的问题答案为真时才需要此字段,为什么它是假的?我不明白。
  • 其实不行,它不太行。现在它总是无效。
  • 对不起我的错误我已经更新了小提琴,现在它按预期工作了。
猜你喜欢
  • 2016-11-24
  • 2014-05-23
  • 2015-11-23
  • 2013-04-20
  • 2013-12-26
  • 2013-03-11
  • 2014-09-08
  • 2016-07-24
  • 1970-01-01
相关资源
最近更新 更多