0
我想寫指令來驗證如果用戶名存在於服務器上。 如果存在,我想通過ng-messages顯示錯誤。 但由於某些原因,誤差不show.I檢查服務器響應,並將其返回正確的價值觀,但看起來像驗證解決不了的承諾或使...ng消息asyncValidators
//Directive
angular.module('main').directive('checkIfUserExists', checkIfUserExists);
checkIfUserExists.$inject = ['authService'];
function checkIfUserExists(authService) {
return {
require: "ngModel",
link: function (scope, element, attributes, ngModel) {
ngModel.$asyncValidators.checkIfUserExists = function (modelValue) {
return authService.suchUserAlreadyExists(modelValue);
};
}
};
};
//service method
suchUserAlreadyExists: function (user) {
return $http.get(baseUrl + "/api/account/someone/" + user).then(function (response, status, headers, config) {
console.log(response.data);
return !response.data;
},function (data, status, headers, config) {
return $q.reject('error occured');
});
}
//Input I want to validate
<div class="col-md-6">
<div class="row">
<div class="col-md-8">
<input type="text" check-if-user-exists ng-pattern="/^[a-zA-Z0-9]*$/" ng-maxlength="10" ng-minlength="6" class="form-control" id="username" name="username" ng-model="general.username" placeholder="******" required />
</div>
</div>
<div class="row">
<div class="col-md-12 inputErrorMessage">
<div ng-messages="registerGeneralForm.username.$error" ng-if="registerGeneralForm.username.$dirty">
<div ng-message="required">This field is required</div>
<div ng-message="pattern">Only alphanumeric characters allowed</div>
<div ng-message="maxlength">Username cannot exceed 10 characters</div>
<div ng-message="minlength">Username must be over 6 characters</div>
<div ng-message="checkIfUserExists">Such user already exists</div>
</div>
</div>
</div>
</div>
任何想法,爲什麼它不起作用? 謝謝你的幫助
想你suggestion.Same result.No錯誤,但還沒有結果...... –
正出現如預期的那樣出現其它不正常的消息? –
Yes.all其他消息按預期工作。 –