2017-04-25 64 views
1

我在用于验证的ember js应用程序中使用了ember-cp-validation。在组件页面中使用validate()方法。但我收到错误(验证不是一个函数)。我提到这个linkvalidate()不是ember-cp-validation中的函数

在模型页面(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') 
}); 

和组件页面,

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

你确定'组件的profile'属性确实已为其定义验证了'model'的实例? – alptugd

+0

'profile'是模型文件名。 – Arunprasath

回答

0

在我的组件我使用:

  • this.get('model').validate()强制验证,
  • this.get('isValid')知道当前输入是否有效。

所以,你可以这样做:

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