如何使用ko.validation.group函数

Tom*_*der 32 javascript validation jquery knockout.js

我正在尝试使用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);
}    
Run Code Online (Sandbox Code Playgroud)

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

My question is,如果我想创建一个只有4个属性的验证组,(P1, P2, P3)我将如何做到这一点?

Jef*_*ado 58

这对我很有用.而不是分组this,创建一个包含您要验证的属性的代理对象.

this.errors = ko.validation.group({
    P1: this.P1,
    P2: this.P2,
    P3: this.P3
});
Run Code Online (Sandbox Code Playgroud)

如果您这样做,请考虑使用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();
Run Code Online (Sandbox Code Playgroud)


小智 13

文档中所述,仅验证特定可观察对象的正确方法是:

this.errors = ko.validation.group([this.P1, this.P2, this.P3]);
Run Code Online (Sandbox Code Playgroud)

  • 从文档:>"还要注意第一个参数不需要是一个数组.如果你只有一个对象,你可以将它作为一个裸对象传递,而不将它包装在一个数组中." (6认同)