2016-10-05 2 views
0

Ich versuche zu überprüfen, ob die E-Mail in meiner Datenbank existiert oder nicht.Benutzerdefinierte E-Mail-Validierungsdirektive zeigt das Validierungsergebnis nicht an

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> 

Ich bin in der Lage Antwort in meiner Konsole zu sehen, dass, ob die E-Mail gültig ist oder nicht, aber nicht auf meiner Sicht.

Bitte helfen Sie mir

Danke

Antwort

0

fand ich nur den Fehler, indem unten an meine js Modifikation [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

Verwenden <span ng-show="signupForm.email_addr.$invalid"> statt <span ng-show="signupForm.email_addr.$validEmail">. Es sollte dein Problem lösen.

+0

Es zeigt sich aber das ist nur für die Validierung eighter die E-Mail mit @ usw. nach den Normen eingegeben wird .So, wenn ich eine E-Mail bereits in meiner Datenbank gibt es nicht angezeigt. Es zeigt nur, wenn ich die E-Mail in falschem Format eingeben. – mark

Verwandte Themen