web-dev-qa-db-ja.com

ko.validation.group関数の使用方法

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、3つのプロパティのみの検証グループを作成する場合(P1, P2, P3) 4つのうち、どうすればこれを行うことができますか?

32
Tom Rider

これは私にとってはうまくいきました。 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();
58
Jeff Mercado

documentation で説明されているように、特定のオブザーバブルのみを検証する正しい方法は次のとおりです。

this.errors = ko.validation.group([this.P1, this.P2, this.P3]);
13
eduardobursa