0
私は、入力された電子メールが利用可能かどうかを確認する指令を持っています、有効性はうまくいきます。そうでなければ、私は素晴らしいメッセージはありません...私の問題は、検証が失敗したときに、入力された電子メール(電子メールが取られたとき)がユーザースコープ変数に保持されていることです。これは、フィールドが空であるか、電子メールのフォーマットが有効でない場合には当てはまりません(正確にはemailAvailableディレクティブにも必要です)。あなたは私が逃したものを私に説明してもらえますか?電子メールがAngular Jsを通して取られるかどうか確認してください
HTML:
<div class="col-md-12 wow fadeIn">
<div class="md-form">
<div class="md-form">
<input type="text"
name="email"
ng-model="user.email"
ng-pattern="emailFormat"
email-available
required
ng-model-options="{ updateOn: 'blur' }" class="form-control">
<label for="email" class="">Email</label>
<span ng-if="userRegistration.$pending.emailTaken" class="text-success">Vérification....</span>
<div ng-if="userRegistration.$error.emailTaken" class="text-danger">Adresse email déjà prise.</div>
<div ng-show="userRegistration.$submitted || userRegistration.email.$touched">
<div ng-show="userRegistration.email.$error.required" class="text-danger">Vous devez indiquer votre email.</div>
</div>
<div ng-show="userRegistration.email.$error.pattern" class="text-danger">
Votre adresse e-mail n'est pas valide.
</div>
</div>
</div>
</div>
角度JS
website.directive('emailAvailable', function($timeout, $q, $http, RESOURCE_API) {
return {
restrict: 'AE',
require: 'ngModel',
link: function(scope, elm, attr, model) {
model.$asyncValidators.emailTaken = function() {
return $http({ method: 'POST', url: RESOURCE_API + '/users/checkEmail',
headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, data : {'email': elm.val()} })
.then(function(result) {
$timeout(function(){
model.$setValidity('emailTaken', false);
if (result.data.data.check == 1) {
// Email Taken, Validation Failed
model.$setValidity('emailTaken', false);
} else {
model.$setValidity('emailTaken', true);
}
}, 1000);
});
};
}
}
});
ありがとうございます。 – CREAZPRO