Подтвердить что ты не робот

Как использовать функцию 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);
}    

В приведенной выше модели представления я создал группу проверки с именованными ошибками для текущего объекта. Теперь, если какое-либо правило проверки выходит из строя на каком-либо 1 свойстве из 4, это свойство ошибки содержит сообщение об ошибке.

My question is, если я хочу создать группу проверки только из 3 свойств (P1, P2, P3) из 4, чем я могу это сделать?

4b9b3361

Ответ 1

Это сработало для меня. Вместо группировки на 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();

Ответ 2

Как описано в документации, правильный способ проверки только определенных наблюдаемых данных:

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