2016-06-07 27 views
1

我正在Angularjs表單上,我需要驗證輸入值是否在數據庫上。 我的HTML是如下問題與自定義指令檢查唯一的電子郵件ID

<div class="form-group mg-btm0" show-errors> 
       <label class="control-label col-sm-4 fw-norm txt-right">Email ID:</label> 
       <div class="col-sm-8"> 
        <input type="email" class="form-control" placeholder="Email ID" name="emailAddress" ng-required="true" autocomplete="Off" ng-model="User.emailId" 
         ng-maxlength="100" emailid-available-validator> 
        <span class="help-block" ng-if="RegisterUser.emailAddress.$error.email">A valid email is required.</span> 
        <span class="help-block" ng-if="RegisterUser.emailAddress.$error.maxlength">Max length is 100.</span> 
        <span class="help-block" ng-if="RegisterUser.emailAddress.$pending"> Checking emailId...</span> 
        <span class="help-block" ng-if="RegisterUser.emailAddress.emailidAvailable">EmailId entered has already been registered</span> 
       </div> 
      </div> 

指令是如下

angularFormsApp.directive('emailidAvailableValidator', ['$http', function ($http) { 
    var baseurl = window.location.protocol + "//" + window.location.host + "/"; 
    return { 
     require: 'ngModel', 
     link: function ($scope, element, attrs, ngModel) { 
      ngModel.$asyncValidators.emailidAvailable = function (value) { 
       //var emailid = { 'emailid': emailaddress }; 
       return $http.get(baseurl + "Users/CheckExternalUserExists/", { emailid: value }); 
      }; 
     } 
    } 
}]) 

和控制器如下

[HttpGet] 
     public ActionResult CheckExternalUserExists(string emailid) 
     { 
      if (AccountExecutor.UserExists(emailid)) 
      { 
       return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Exists"); 
      } 
      return new HttpStatusCodeResult(HttpStatusCode.OK, "Not Exists"); 
     } 

現在我有問題的。

1。電子郵件ID正在作爲null傳遞給控制器​​。

2。我想說明兩個消息

a)如果電子郵件ID是唯一的,那麼消息應該說,它的一些獨特的

b)在隨後的電子郵件ID存在它應該顯示它的存在消息, 目前的消息是不是被只顯示紅色邊框。

回答

0
try below in your code 

    ngModel.$asyncValidators.emailidAvailable = function (ngModel.$modelValue) { 
      //var emailid = { 'emailid': emailaddress }; 
      return $http.get(baseurl + "Users/CheckExternalUserExists/", { emailid: value }); 
     }; 

    check out below link for more information... 
    [asyncValidators][1] 
+0

它有什麼不同? – Mahajan344