web-dev-qa-db-fra.com

Comment utiliser la fonction ko.validation.group

J'essaie d'utiliser le plugin knockout.validation. J'ai créé un exempleViewModel:

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);
}    

Dans le modèle de vue ci-dessus, j'ai créé un groupe de validation nommé erreurs pour l'objet actuel. Maintenant, si une règle de validation échoue sur une propriété sur 4, cette propriété d'erreurs contient un message d'erreur.

My question is, si je veux créer un groupe de validation de seulement 3 propriétés (P1, P2, P3) sur 4, comment faire?

32
Tom Rider

Cela a bien fonctionné pour moi. Plutôt que de regrouper sur this, créez un objet proxy qui contient les propriétés que vous souhaitez valider.

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

Dans ce cas, envisagez d'utiliser validatedObservable au lieu de group. Non seulement vous obtenez les erreurs, mais vous pouvez vérifier collectivement si toutes les propriétés sont valides en utilisant la propriété 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

Comme décrit dans la documentation la bonne façon de valider uniquement des observables spécifiques est:

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