Angularjs AsyncValidator的错误消息不可见

Angularjs AsyncValidator的错误消息不可见,angularjs,Angularjs,所需指令显示红色错误消息,该消息有效! uniqueschoolclassnumberValidator指令不显示红色错误消息 我总是从服务器返回exists=>true,但我也尝试了false 我错了什么?自定义指令肯定会触发 指令 'use strict'; angular.module('TGB').directive('uniqueschoolclassnumberValidator', function (schoolclassCodeService) { return {

所需指令显示红色错误消息,该消息有效! uniqueschoolclassnumberValidator指令不显示红色错误消息

我总是从服务器返回exists=>true,但我也尝试了false

我错了什么?自定义指令肯定会触发

指令

 'use strict';
angular.module('TGB').directive('uniqueschoolclassnumberValidator', function (schoolclassCodeService) {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModel) {
            ngModel.$asyncValidators.unique = function (schoolclass) {
                var schoolclassNumber = "0a";
                var schoolyearId = 1;
                return schoolclassCodeService.exists(schoolyearId, schoolclassNumber);
            };
        }
    };
});
this.exists = function (schoolyearId, schoolclassNumber) {

      var path = 'api/schoolyears/' + schoolyearId + '/schoolclasses/' + schoolclassNumber;
      return $http.get(path).then(function (response) {
          if (response.data == true) {
              $q.reject("schoolclass number has already been taken");
          }
          else {
              return $q.resolve();
          }
      });
  };
服务

 'use strict';
angular.module('TGB').directive('uniqueschoolclassnumberValidator', function (schoolclassCodeService) {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModel) {
            ngModel.$asyncValidators.unique = function (schoolclass) {
                var schoolclassNumber = "0a";
                var schoolyearId = 1;
                return schoolclassCodeService.exists(schoolyearId, schoolclassNumber);
            };
        }
    };
});
this.exists = function (schoolyearId, schoolclassNumber) {

      var path = 'api/schoolyears/' + schoolyearId + '/schoolclasses/' + schoolclassNumber;
      return $http.get(path).then(function (response) {
          if (response.data == true) {
              $q.reject("schoolclass number has already been taken");
          }
          else {
              return $q.resolve();
          }
      });
  };
Html

<form name="myForm">
    <div class="col-sm-8">
        <input type="text" unique-schoolclasnumber-Validator name="myInput" 
               ng-model-options="{ updateOn: 'default blur', debounce: {'default': 300, 'blur': 0} }"
               ng-model="schoolclassNumber" class="form-control" 
               required placeholder="Enter schoolclass">
    </div>
    <div ng-messages="myForm.myInput.$error" style="color:red" role="alert">
        <div ng-message="required">You did not enter anything.</div>
        <div ng-message="unique">That schoolclass number already exists.</div>
    </div>
</form>

您没有输入任何内容。
那个班级号码已经存在了。

在您服务的exists方法中,$q之前应该有return关键字。reject:

if (response.data == true) {
     return $q.reject("schoolclass number has already been taken");
}
else {
     return $q.resolve();
}
指令应命名为
uniqueSchoolclassnumberValidator
,而不是
uniqueSchoolclassnumberValidator
(AngularJS将破折号分隔格式更改为camelCase)


html代码中还有一个拼写错误,即单词“class”。它应该是
unique schoolclassnumber Validator
而不是
unique schoolclassnumber Validator

这个拼写错误来自我在这里做的复制/粘贴错误。但是该死的是,报税表不见了,我只是没看到而已!现在它工作了!