当用户在注册过程中输入他的电子邮件时,我需要验证电子邮件是唯一的.这应该在Angular JS的TAB函数上发生



选项卡功能控制应转到服务器并检查唯一的电子邮件ID并返回成功或在errormessage中提到的失败。

我已经写了下面的代码,并尝试使用ng-change,ng-blur,但控制没有达到。

controller.js

checkUniqueEmail(emailId);
function checkUniqueEmail(emailId) {
    MerchantRepository.checkUniqueEmail(emailId)
    .then(function (response){
       scope.errorMessage=response.data;
    },
    function(errResponse){
       console.error('Error while fetching Produce Info:Merchant Side');
    }
    );
};

repository.js

this.checkUniqueEmail = function(emailId){
   var defer = $q.defer(); 
   //defer is units of work,promise is data from those defer
   var merchantEmailPromise =  http.post('/ABCD1.3/checkMerchantEmail/',emailId);
   merchantEmailPromise.then(function(response){ 
      errorMessage =response;
      defer.resolve(errorMessage);
   });
   return defer.promise;
};

reg.html

<div class="col-sm-5 form-group">
    <input type="email" style="width: 250px; height:40px;" class="form-control"
    name="emailId" 
    ng-model="merchant.emailId" placeholder="Enter  Email Id"
    ng-minlength="5" ng-maxlength="50"
    ng-change="checkUniqueEmail(emailId)" />
    {{errorMessage}}
</div>

任何人都可以帮忙吗?尝试了更多的次,遗漏了空白。

谢谢

正如我在查询中看到的,只有"响应"承诺,所以请始终给予控制器响应,而不是KO。

this.checkUniqueEmail = function(emailId){
   var defer = $q.defer(); 
   //defer is units of work,promise is data from those defer
   var merchantEmailPromise =  http.post('/ABCD1.3/checkMerchantEmail/',emailId);
   merchantEmailPromise.then(function(response){ 
   errorMessage =response;
   **defer.resolve(errorMessage);**
});
   return defer.promise;
};

有些东西,我无法理解为什么是正确的响应,该参数称为errormessage。最后,您必须创建一个" defer. -revection(errormessage)";何时是KO,并告诉我们。

我已经解决了问题,如果有人需要

reg.html

<input type="email" name="emailId" ng-model="user.emailId" x-ng-blur="checkUniqueEmail(merchant.emailId)" required />

usercontroller.js

scope.checkUniqueEmail = function(email) {
    Repository.checkUniqueEmail(email)
        .then(function(response) {
            var mEmail = response.data.status;
                if (mEmail != null) {
                    scope.errorMessage2 = mEmail;
                    } else {
                    scope.errorMessage2 = "";
                }
            });
        };

repository.js

this.checkUniqueEmail = function(email){
var defer = $q.defer(); 
var EmailPromise = http.post('/ProjectName/checkMerchantEmail/',email);
EmailPromise.then(function(response){ 
    errorMessage =response;
    defer.resolve(errorMessage);
});
return defer.promise;

};

从这里您的服务器端实现从数据库检查。

最新更新