2016-02-27 50 views
0

我有一個註冊用戶註冊到我的系統的以下SignUp控制器。我遇到了form.$valid屬性的問題,當Sequelize的驗證錯誤被拋出時,該屬性被凍結爲false ...我應該在控制器中添加/更改哪些內容?我認爲,它應該刪除錯誤的$有效的價值ng-change事件的具體輸入可能?但我不知道,如何實現這一目標?如何在AngularJS中引發Sequelize驗證錯誤時重新發送表單?

class SignupController { 
    //start-non-standard 
    user = {}; 
    errors = {}; 
    submitted = false; 
    //end-non-standard 

    constructor(Auth, $state) { 
    this.Auth = Auth; 
    this.$state = $state; 
    } 

    register(form) { 
    this.submitted = true; 
    console.log(this.errors); 
    if (form.$valid) { 
     console.log("clikc"); 
     this.Auth.createUser({ 
     nickname: this.user.nickname, 
     email: this.user.email, 
     password: this.user.password 
     }) 
     .then(() => { 
     // Account created, redirect to home 
     this.$state.go('main'); 
     }) 
     .catch(err => { 
     err = err.data; 
     this.errors = {}; 

     // Update validity of form fields that match the sequelize errors 
     if (err.name) { 
      angular.forEach(err.fields, function(value, key) { 
      form[key].$setValidity('sequelize', false); 
      this.errors[key] = err.message; 
      }, this); 
     } 
     }); 
    } 
    } 
} 

angular.module('batnApp') 
    .controller('SignupController', SignupController); 

回答

0

我已經想通了與NG-變化功能,這已經得到了以下功能:

resetValidation(form, field) { 
    if(this.submitted && !form.$valid) { //validation is on server side 
    form[field].$setValidity('sequelize', true); 
    } 
} 
相關問題