32

我正在尝试使用 knockout.validation 插件。我创建了一个 exampleViewModel :

function exampleViewModel() {
   this.P1 = ko.observable().extend({ required : true });
   this.P2 = ko.observable().extend({ required : true });
   this.P3 = ko.observable().extend({ required : true });
   this.P4 = ko.observable().extend({ required : true });

   this.errors = ko.validation.group(this);
}    

在上面的视图模型中,我为当前对象创建了一个名为 errors 的验证组。现在,如果任何验证规则在 4 个属性中的任何 1 个属性上失败,则此错误属性包含错误消息。

My question is,如果我想创建一个只有 4 个属性(P1, P2, P3)中的 3 个属性的验证组,我该怎么做?

4

2 回答 2

58

这对我来说效果很好。与其在 上进行分组,不如this创建一个代理对象来保存您要验证的属性。

this.errors = ko.validation.group({
    P1: this.P1,
    P2: this.P2,
    P3: this.P3
});

如果您这样做,请考虑使用validatedObservable而不是group. 您不仅会收到错误消息,而且可以使用该isValid属性共同检查所有属性是否有效。

this.validationModel = ko.validatedObservable({
    P1: this.P1,
    P2: this.P2,
    P3: this.P3
});

// is the validationModel valid?
this.validationModel.isValid();
// what are the error messages?
this.validationModel.errors();
于 2012-10-24T02:43:53.373 回答
13

文档中所述,仅验证特定 observables 的正确方法是:

this.errors = ko.validation.group([this.P1, this.P2, this.P3]);
于 2013-09-02T17:44:24.747 回答