2017-04-25 3 views
1

Ich verwende ember-cp-Validierung in Ember js-Anwendung für die Validierung. Verwenden der validate() -Methode auf der Komponentenseite. aber ich erhalte einen Fehler (Validierung ist keine Funktion). I bezeichnet diese linkvalidate() ist keine Funktion in ember-cp-validation

Bei den Modellen Seite (profile.js),

import DS from 'ember-data'; 
import { validator, buildValidations } from 'ember-cp-validations'; 

const Validations = buildValidations({ 
    name: validator('presence', true), 

    address:[ 
     validator('presence', true), 
     validator('length', { max: 300}), 
    ], 

    pincode: validator('presence', true), 

    email:[ 
     validator('presence', true), 
     validator('format', {type:'email'}) 
    ] 

}); 

export default DS.Model.extend(Validations,{ 
    name: DS.attr('string'), 
    address: DS.attr('string'), 
    pincode: DS.attr('number'), 
    email: DS.attr('string') 
}); 

und Komponenten Seite,

import Ember from 'ember'; 

export default Ember.Component.extend({  
    actions: { 
     authenticate() {    
      let profile = this.get('profile'); 
      profile.validate().then(({ validations }) => { 
       if(validations.get('isValid')){ 
        this.transitionToRoute("welcome"); 
       } 
      });   
     } 
    } 
}); 
+0

sind Sie sicher, 'Profile' Attribut der Komponente ist in der Tat eine Instanz des' Modell 'für die Sie Validierungen definiert haben? – alptugd

+0

'profile' ist models filename. – Arunprasath

Antwort

0

In meiner Komponente Ich verwende:

  • this.get('model').validate() um eine Validierung zu erzwingen,
  • this.get('isValid') um zu wissen, ob die aktuelle Eingabe gültig ist.

So könnten Sie tun:

this.get('model').validate().then(() => { 
    if (this.get('isValid')) { 
    this.transitionToRoute("welcome"); 
    } 
});