2017-04-13 1 views
-1

Lorsque j'appelle isValid() sur mon modèle backbone, il renvoie toujours undefined même lorsque les règles de validation ont été respectées ou non. Qu'est-ce qui pourrait mal tourner ici?model.isValid renvoie toujours undefined

Quel pourrait être le problème ici et comment puis-je le réparer?

Mon modèle:

Backbone.Model.extend({ 

    validation: { 

      firstname: { required: true, msg: _('First Name is required').translate() } 
     , lastname: { required: true, msg: _('Last Name is required').translate() } 
    } 
}); 

Mon point de vue:

Backbone.View.extend({ 

     events: { 
      'submit form[data-action="specify-pbt"]': 'specifyPBT' 
     } 

    , bindings: { 
      '[name="firstname"]': 'firstname' 
     , '[name="lastname"]': 'lastname' 
     } 

    , initialize: function(options) { 
      this.model = options.model || new PBTSpecifyModel(); // The latter condition is always met 

      BackboneCompositeView.add(this); 
      BackboneFormView.add(this); 
      Backbone.Validation.bind(this); 
     } 

    , specifyPBT: function (e) 
     { 
      var options = jQuery(e.target).serializeObject(); 

      console.log("model: "); 
      console.log(this.model); // Outputs the model: looks all correct 
      console.log("isValid: "); 
      console.log(this.model.isValid()); // Outputs undefined 
      console.log("validationError: "); 
      console.log(this.model.validationError); // Outputs null 
     } 

    , getContext: function() 
     { 
      return { 

      } 
     } 
    }) 
}); 
+0

Utilisez la méthode 'isValid (true)' –

+0

Je vois que vous avez déjà posé d'autres questions sans donner de commentaires ici. Si l'une des réponses vous a aidé, vous pourriez en faire la promotion et/ou en accepter une. Si aucune réponse n'était suffisante, il est recommandé d'écrire et d'accepter votre propre réponse. –

Répondre

0

S'il vous plaît lisez la documentation avant de poser des questions.

isValidmodel.isValid()
Run validate pour vérifier l'état du modèle.

validatemodel.validate(attributes, options)
Cette méthode est laissée non défini et vous êtes invité à la remplacer par une logique de validation personnalisée

Vous utilisez un plug-in, non méthodes de validation de backbone lui-même. Suivez les instructions des plugins sur la façon de vérifier l'état de validation.

0

Backbone.Validation possède une entrée de documentation sur sa version de isValid qui diffère de la version par défaut de Backbone.

Vérifiez si un attribut, un tableau d'attributs ou l'ensemble du modèle est valide.

isValid retours undefined quand aucune validation a eu lieu et le modèle a la validation (sauf Backbone v0.9.9 où la validation est appelée du constructeur), sinon, vrai ou faux.

Si vous ne transmettez pas d'argument, les propriétés définies par l'option de liaison des attributs seront validées. Si aucune option d'attributs n'est utilisée, il n'y aura pas de validation.

var isValid = model.isValid(); 

Si vous passez vrai comme argument, ce forcera une validation avant que le résultat est renvoyé:

var isValid = model.isValid(true); 

Si vous passez le nom d'un attribut ou un tableau de noms, vous peut vérifier si oui ou non les attributs sont valides:

// Check if name is valid 
var isValid = model.isValid('name'); 

// Check if name and age are valid 
var isValid = model.isValid(['name', 'age']); 

Le default isValid of a Backbone Model retournera toujours un booléen.