2015-09-27 19 views
0

У меня проблема с ответом в контроллере регистрации. По какой-то причине результат всегда регистрируется. Ошибка, даже когда пользователь сохраняется в базе данных. Почему это происходит. Я новичок в angularjs - весна и не понимаю, почему это происходит?Angularjs возвращает неверный ответ

user.service.js

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .factory('UserService', UserService); 

    UserService.$inject = ['$http']; 
    function UserService($http) { 
     var service = {}; 

     service.Create = Create; 


     return service; 

     function Create(user) { 

      console.log(user.password) 
      console.log(user.lastName) 
      console.log(user.email) 
      console.log(user.firstName) 
      console.log(user.customfield) 

      return $http.post('/api/register', user) 
     } 

})(); 

И register.Controller

(function() { 
    'use strict'; 

    angular 
     .module('app') 
     .controller('RegisterController', RegisterController); 

    RegisterController.$inject = ['UserService', '$location', '$rootScope' ]; 
    function RegisterController(UserService, $location, $rootScope) { 
     var vm = this; 

     vm.register = register; 

     function register() { 
      vm.dataLoading = true; 
      UserService.Create(vm.user) 
       .then(function (response) { 
        if (response.success) { 

         console.log("register Succeed") 

         //FlashService.Success('Registration successful', true); 
         $location.path('/home'); 

        } else { 

         console.log("register Failed") 
         vm.dataLoading = false; 
        } 
       }); 
     } 
    } 

})(); 

register.html

<div class="container" ng-controller="RegisterController as vm"> 
    <div class="col-md-6 col-md-offset-3"> 
     <h2>Register</h2> 
     <div ng-show="vm.error" class="alert alert-danger">{{vm.error}}</div> 
     <form name="form" ng-submit="vm.register()" role="form"> 


      <div class="form-group" ng-class="{ 'has-error': form.lastName.$dirty && form.lastName.$error.required }"> 
       <label for="lastName">Last name</label> 
       <input type="text" name="lastName" id="lastName" class="form-control" ng-model="vm.user.lastName" required /> 
       <span ng-show="form.lastName.$dirty && form.lastName.$error.required" class="help-block">Last name is required</span> 
      </div> 

      <div class="form-group" ng-class="{ 'has-error': form.firstname.$dirty && form.firstname.$error.required }"> 
       <label for="firstName">First name</label> 
       <input type="text" name="firstName" id="firstName" class="form-control" ng-model="vm.user.firstName" required /> 
       <span ng-show="form.firstName.$dirty && form.firstName.$error.required" class="help-block">First name is required</span> 
      </div> 


      <div class="form-group" ng-class="{ 'has-error': form.customfield.$dirty && form.customfield.$error.required }"> 
       <label for="customfield">Custom field</label> 
       <input type="text" name="customfield" id="customfield" class="form-control" ng-model="vm.user.customfield" required /> 
       <span ng-show="form.customfield.$dirty && form.customfield.$error.required" class="help-block">customfield is required</span> 
      </div> 

      <div class="form-group" ng-class="{ 'has-error': form.username.$dirty && form.username.$error.required }"> 
       <label for="email">Username</label> 
       <input type="text" name="email" id="email" class="form-control" ng-model="vm.user.email" required /> 
       <span ng-show="form.email.$dirty && form.email.$error.required" class="help-block">email is required</span> 
      </div> 


      <div class="form-group" ng-class="{ 'has-error': form.password.$dirty && form.password.$error.required }"> 
       <label for="password">Password</label> 
       <input type="password" name="password" id="password" class="form-control" ng-model="vm.user.password" required /> 
       <span ng-show="form.password.$dirty && form.password.$error.required" class="help-block">Password is required</span> 
      </div> 
      <div class="form-actions"> 
       <button type="submit" ng-disabled="form.$invalid || vm.dataLoading" class="btn btn-primary">Register</button> 
       <a href="#/login" class="btn btn-link">Cancel</a> 
      </div> 
     </form> 
    </div> 
</div> 

ответ

2

По the documentation:

Объект ответа имеет следующие свойства:

  • данные - {строка | Object} - тело ответа преобразованное с функциями преобразования.
  • статус - {номер} - код состояния HTTP ответа.
  • headers - {function ([headerName])} - Функция получения заголовка.
  • config - {Object} - объект конфигурации, который использовался для генерации запроса.
  • statusText - {string} - текст ответа HTTP-ответа.

Вы тестируете response.success, который не является свойством документации говорит существует. Посмотрите на status.

Код состояния отклика между 200 и 299 считается статусом успеха и приведет к вызову обратного вызова успеха.

+0

Не могли бы вы проиллюстрировать на примере того, как я могу использовать, если заявление когда пользователь успешно вставляется в базу данных. – Greg

+0

Вот базовый пример того, о чем упоминал Квентин и как он работает: http://jsbin.com/gogesajogi/edit?js,output – benfes

0

Что касается проверки успеха углового обещания, вам не нужно проверять его с помощью оператора if. То функция обещании имеет аргументы (функции), первый для успеха вызова и второй неудачи, как в:

UserService.Create(vm.user) 
    .then(function(response) { 
    // this callback will be called asynchronously 
    // when the response is available, i.e. success 
    }, function(response) { 
    // called asynchronously if an error occurs 
    // or server returns response with an error status. 
    }); 
Смежные вопросы