2016-10-05 10 views
0

電子メールがデータベースに存在するかどうかを確認しようとしています。カスタム電子メール検証ディレクティブが検証結果を表示しない

JS

var app = angular.module('emailValidApp', []) 
app.directive('validateEmail', function($http) { 
     return { 
     restrict: 'A', 
      scope: true, 
      require: 'ngModel', 
      link: function(scope, elem, attrs, ctrls) { 
       var ngModel = ctrls; 
       scope.$watch(attrs.ngModel, function(email) { 
        var url = 'http://xxxx:8081/xxxx/user/getemail?email='+email; 

         $http.get(url) 
         .then(function(data) { 
          if (data.email_valid) { 
           ngModel.$setValidity('validEmail', false); 
          } else { 
           ngModel.$setValidity('validEmail', true); 
          } 
         }, function(error) { 
          ngModel.$setValidity('validEmail', false); 
         }); 
       }); 
      } 
     } 
}); 
app.controller('SignUpController', function($scope) { 

$scope.signMeup; 
}); 

View.jsp

<form name="signupForm" ng-submit="signMeUp()"> 
<div> 
<label>Email</label> 
<input type="email" name="email_addr" ng-model="info.email" validate-email/> 
<span ng-show="signupForm.email_addr.$validEmail"> 
<p>This email address already exists.</p> 
</span> 
</div> 
<button type="submit" ng-disabled="signupForm.$invalid">Submit</button> 
</form> 

私はメールが有効であるかどうかということではなく、私の見解で私のコンソールでの応答を見ることができています。

私を助けてください

ではなく<span ng-show="signupForm.email_addr.$validEmail">の使用<span ng-show="signupForm.email_addr.$invalid">あなた

答えて

0

は、私はちょうど私のjs [data.data]で一部の下に変更することでエラーを発見

$http.get(url) 
     .then(function(data) { 
     console.log(data.data); 
          if (data.data) { 
           console.log("inside if : "+ngModel.$setValidity('validEmail', false)); 
           ngModel.$setValidity('validEmail', false); 
          } else { 
           console.log("inside else :" +ngModel.$setValidity('validEmail', true)) 
           ngModel.$setValidity('validEmail', true); 
          } 
0

ありがとうございます。あなたの問題を解決するはずです。

+0

それが現れているが、電子メールは、@などと規範に従って入力されeighterそれが唯一の検証のためにあります.So私はすでに私のdbにそれが表示されない電子メールを入力するとき。それは私が間違った形式で電子メールを入力するときにのみ表示されます。 – mark

関連する問題