Javascript 角度AJAX验证器。在验证过程中防止提交的最佳方法?

Javascript 角度AJAX验证器。在验证过程中防止提交的最佳方法?,javascript,ajax,angularjs,validation,Javascript,Ajax,Angularjs,Validation,对于角度形式,很容易看出形式是$valid还是$invalid。这很好,我只允许用户提交$valid的表单 但是,有没有一种简单的方法表明它正在验证过程中?我们不清楚它是有效的还是无效的 如果您正在检查电子邮件地址是否有效,这是可取的。在AJAX调用返回之前,我不想将该字段标记为$invalid,否则我可能会在没有错误的情况下向用户显示错误。但我不希望他们能够提交,如果我们仍然在检查电子邮件地址 有什么建议吗 我用于AJAX验证器的代码基于@BenLesh function linkFunc(s

对于角度形式,很容易看出形式是$valid还是$invalid。这很好,我只允许用户提交$valid的表单

但是,有没有一种简单的方法表明它正在验证过程中?我们不清楚它是有效的还是无效的

如果您正在检查电子邮件地址是否有效,这是可取的。在AJAX调用返回之前,我不想将该字段标记为$invalid,否则我可能会在没有错误的情况下向用户显示错误。但我不希望他们能够提交,如果我们仍然在检查电子邮件地址

有什么建议吗

我用于AJAX验证器的代码基于@BenLesh

function linkFunc(scope, el, attr, ctrl) {
  // When the scope changes, check the email.
  scope.$watch(attr.ngModel, validate);

  function validate (value)
  {
    // Show as valid until proven invalid
    ctrl.$setValidity('validateEmail', true);

    // if there was a previous attempt, stop it.
    if(timeoutId) {
      clearTimeout(timeoutId);
    }

    timeoutId = setTimeout(function() {
      // Make $http call and $setValidity
      $http.get(url)
      .then(function(data) {
        ctrl.$setValidity('validateEmail', data.isValid);
      });
    }, 200);
  }
}

可以在处理ajax请求时禁用该按钮。您也可以使用fieldset来查看手册中的类似逻辑

那么在你看来,

<button ng-disabled="waitingForAjax" ../>

谢谢-很明显的答案。我对它做了一些调整,改为设置ctrl.validating=true。然后在我看来,我会检查vm.formName.emailFieldName.validating vm,就像我使用controllerAs:vm一样。谢谢,您还可以使用$http.pendingRequests来检查全局是否存在任何挂起的请求。它可能在将来对你很方便。
<button ng-disabled="waitingForAjax" ../>