Использование $inject в сервисе приводит к ошибке. Ошибка: [$http:badreq] - Angular JS

Есть регистрационная форма. При отправке регистрационной формы я пытаюсь сохранить данные через угловой сервис. Это дает мне ошибку Ошибка: [$http:badreq]

Это мой register.controller.js

   (function(){
       var app = angular.module('myapp');
       app.controller('RegisterController',RegisterController);

       RegisterController.$inject = ['UserService', '$location','$rootScope'];
           function RegisterController(UserService, $location, $rootScope) {
             var vm = this;
             vm.register = register;
                function register(){
                   UserService.Create(vm.user)
                     .then(function(response)
                     {
                       if(response.success){
                       }else{

                      }
                  });
                }
              };
          })();

Вот пользовательский сервис

 (function () {
    'use strict';

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

     UserService.$inject = ['$timeout', '$filter', '$q', '$http'];
     function UserService($timeout, $filter, $q, $http) {
       var service = {};
       service.Create = Create;
       return service;

       var url='ajax.php';

       function Create(user) {
             $http({
                method: 'post',
                url: url,
                data: user,
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}
               }).
                success(function(data, status, headers, config) {
                    console.log(data);
                }).
               error(function(data, status, headers, config) {
                      console.log(data);
               });
              }
            }
         })();

В чем проблема с кодом. Пожалуйста помоги. заранее спасибо

1 ответ

Ты используешь return service; до определения URL, поэтому сервис $http получает неопределенный вместо URL. Решение состоит в том, чтобы переместить оператор возврата в последнюю из сервисных функций, например:

(function () {
'use strict';

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

 UserService.$inject = ['$timeout', '$filter', '$q', '$http'];
 function UserService($timeout, $filter, $q, $http) {
   var service = {};
   service.Create = Create;

   var url='ajax.php';

   function Create(user) {
         $http({
            method: 'post',
            url: url,
            data: user,
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
           }).
            success(function(data, status, headers, config) {
                console.log(data);
            }).
           error(function(data, status, headers, config) {
                  console.log(data);
           });
          }

     return service;

        }
     })();
Другие вопросы по тегам