Angularjs возвращает неправильный ответ

0

У меня проблема с ответом в контроллере регистрации. По какой-то причине результат всегда регистрируется с ошибкой, даже когда пользователь сохраняется в базе данных. Почему это происходит. Я новичок в 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 ответа

2

Согласно документации:

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

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

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

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

  • 0
    Не могли бы вы проиллюстрировать на примере, как я могу использовать оператор if, когда пользователь успешно вставить в базу данных.
  • 0
    Вот основной пример того, на что ссылался Квентин и как он работает: jsbin.com/gogesajogi/edit?js,output
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.
  });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню