1. ホーム
  2. javascript

[解決済み] ko.validation.group関数の使用方法

2022-02-19 11:35:27

質問事項

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つでもバリデーションルールが失敗すると、このerrorsプロパティにエラーメッセージが格納されます。

My question is もし、3つのプロパティからなる検証グループを作りたい場合は、以下のようになります。 (P1, P2, P3) のうち、どのようにこれを行うことができますか?

どのように解決するのですか?

これは私にとってはうまくいった。 グループ化するのではなく 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();