$ http.get AngularJS

时间:2018-05-27 09:12:30

标签: javascript angularjs events

我目前正在使用AngularJS和使用SlimPHP的耗材API进行Web应用程序。

当我注册用户时,我需要使用GET方法执行检查。根据此方法返回,我应该运行$event.preventDefault()或不运行。

AngularJS的代码如下:

$scope.checkEmails = function(e){
  var req = $http.get(url + 'adv/register/check?email=' + $scope.email).then(function(response){
      if(response.data === true) {
        e.preventDefault()
      }
  })
}

HTML按钮是这样的:

<button type="submit" class="btn btn-alt-success" ng-click="checkEmails($event)">

问题在于,当我尝试在$ http调用内执行e.preventDefault()时,对象$ event未定义。

所以,我如何在$ http call 中传递此对象,或如何从其范围之外的$ http调用获取值以在外面进行检查电话。

谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个

$scope.checkEmails = function(e){

  var req = $http.get(url + 'adv/register/check?email=' + $scope.email).then(function(response){
      if(response.data === true) {
        $scope.submitForm =false;
      } else{
         $scope.submitForm = true;
       }
  })

像这样添加ng-submit

<form ng-submit=“submitForm && submit()”>

答案 1 :(得分:0)

您的设置将永远不会有效,因为表单是在$http请求解决之前提交的。带type="submit"的按钮会立即提交其推荐表格;由于JS异步性质,延迟preventDefault()没有效果。因此,请避免通过提交按钮提交表单,而是通过代码执行。在简单的JS中有多种方式:

document.getElementById('formId').submit()

即:

<button type="button" class="btn btn-alt-success" ng-click="checkEmails()">
        ^^^^^^^^^^^^^
$scope.checkEmails = function(e) {
  $http.get(url + 'adv/register/check?email=' + $scope.email).then(function(response){
    if (response.data !== true) {
      document.getElementById('formId').submit()        
    }
  })
}