2016-12-26 6 views
0

Я хочу сделать очень простую регистрацию с помощью AngularJS. Во-первых, я получаю пользователя с этим электронным письмом и присваиваю $ scope.users. Если метод GetUserByEmail возвращает более одного пользователя, я пытаюсь показать сообщение «Пользователь уже существует». И вот проблема. Метод GetUserByEmail исключается. Программа «перескакивает» на условие «если» и $ scope.users всегда пуста, я не знаю почему. Иногда после добавления пользователя в базу данных, метод возвращает массив объекта и присвоить $ scope.usersРегистрация с использованием AngularJS

Это мой код с помощью метода CreateUser:

var RegisterController = function ($scope, Api, $http) { 
 

 
    $scope.users = { 
 
    } 
 

 
    $scope.CreateUser = function() { 
 
     var user = { 
 
      Password: $scope.password, 
 
      Name: $scope.name, 
 
      Surname: $scope.surname, 
 
      Email: $scope.email, 
 
      DateOfBirth: $scope.dateofBirth 
 
     } 
 

 
     Api.GetUserByEmail("Users", "GetUserByEmail", $scope.email).then(function (d) { 
 
       $scope.users = d; 
 
      }); 
 

 
     if ($scope.users.length > 0) 
 
     { 
 
      alert("User already exists!"); 
 
      $scope.users = {}; 
 
     } 
 
     else 
 
     { 
 
      Api.PostUser("Users", "PostUser", user).then(function (d) { 
 
       alert("Hello"); 
 
      }); 
 
     } 
 

 

 
    }; 
 
} 
 

 
RegisterController.$inject = ['$scope', 'Api', '$http'];

И метод GetUserByEmail:

this.GetUserByEmail = function (controllerName, methodName, email) { 
 
     var promise = $http({ 
 
      method: 'GET', 
 
      url: 'api/' + controllerName + '/' + methodName + '?email=' + email, 
 
      config: { 
 
       params: { 
 
        "email": email 
 
       } 
 
      } 
 
     }) 
 
     .then(function onSuccess(response) { 
 
      return response.data; 
 
     }, 
 
     function onError(response) { 
 
      return response.statusText; 
 
     }); 
 
     return promise; 
 
    }

ответ

0

Если вы использовали блок успеха ... ошибок по вашему запросу, Eventhough ответ нулевой, запрос будет возвращать в успех блока, и вы можете проверить YOR данные. Я думаю, что это прекрасно.

var RegisterController = function ($scope, Api, $http) { 

    $scope.users = { 
    } 

    $scope.CreateUser = function() { 
     var user = { 
      Password: $scope.password, 
      Name: $scope.name, 
      Surname: $scope.surname, 
      Email: $scope.email, 
      DateOfBirth: $scope.dateofBirth 
     } 

     Api.GetUserByEmail("Users", "GetUserByEmail", $scope.email).success(function (response) { 
       if (response!=null && dresponse.lenght > 0) 
     { 
      alert("User already exists!"); 
      $scope.users = {}; 
     } 
     else 
     { 
       Api.PostUser("Users", "PostUser", user) 
       .success(function (d) { 
        alert("Hello"); 
      }).error(function(e){ 
      console.log(e.message); 
      }); 
     } 
      }).error(function(error){ 
       console.log(error.message); 
      }); 
    }; 
} 

RegisterController.$inject = ['$scope', 'Api', '$http']; 
+1

Это тоже работает, спасибо! :) – ryckoshet

1

Попробуйте это!

var RegisterController = function($scope, Api, $http) { 
 

 
    $scope.users = {} 
 

 
    $scope.CreateUser = function() { 
 
    var user = { 
 
     Password: $scope.password, 
 
     Name: $scope.name, 
 
     Surname: $scope.surname, 
 
     Email: $scope.email, 
 
     DateOfBirth: $scope.dateofBirth 
 
    } 
 

 
    Api.GetUserByEmail("Users", "GetUserByEmail", $scope.email).then(function(d) { 
 
     $scope.users = d; 
 
     if ($scope.users.length > 0) { 
 
     alert("User already exists!"); 
 
     $scope.users = {}; 
 
     } else { 
 
     Api.PostUser("Users", "PostUser", user).then(function(d) { 
 
      alert("Hello"); 
 
     }); 
 
     } 
 
    }); 
 

 
    }; 
 
} 
 

 
RegisterController.$inject = ['$scope', 'Api', '$http'];

+1

Спасибо, это работает :). – ryckoshet

Смежные вопросы