2016-01-13 3 views
0

Я пытаюсь выполнить ququest http в угловом. Как-то кажется, что я упускаю то, что я не могу понять, что это такое? При загрузке страницы я получаю эту ошибку:Угловой асинхронный http-запрос

Error: [$injector:undef] http://errors.angularjs.org/1.4.5/$injector/undef?p0=%24formServices 

Моя_служба:

app.factory('$formServices',['$http','$q',function ($http, $q) { 

       function postSubmit (fData) { 
        return $http({ 
         url: 'forms/Form1.php', 
         method: "POST", 
         data: { items: JSON.stringify(fData) } 
        }); 
       } 
     } 
    ] 
); 

И контроллер, который вызывает службу:

$formServices.postSubmit($scope.Parameters).then(function (response) { 
        console.log(response); 
        $scope.Results = response; 
       }); 

Что мне не хватает на?

+1

К сожалению, этот последний комментарий вам нужно вернуть с вашей фабрикой. – EvilZebra

+0

Завод должен ВОЗВРАТИТЬ что-то. – Seti

ответ

2

$injector:undef

Попробуйте добавить возврат к вашей фабрике. Кроме того, если вы хотите вызвать функцию с точечной нотацией, вам нужно разместить функцию внутри объекта.

app.factory('$formServices',['$http','$q',function ($http, $q) { 

       return { 
        postSubmit: function(fData) { 
         return $http({ 
          url: 'forms/Form1.php', 
          method: "POST", 
          data: { items: JSON.stringify(fData) } 
         }); 
        } 
       } 
     } 
    ] 
); 
+0

При добавлении возвращаемого результата я получаю: TypeError: $ formServices.postSubmit не является функцией –

+0

Ну ваш код показывает только функцию postSubmit. И это нужно будет структурировать по-другому, если так вы хотите это назвать. Показанный код просто вызывается через '$ formServices()'. Пожалуйста, обновите свой вопрос со всем своим кодом, если вам нужна дополнительная помощь. – EvilZebra

+0

Я думаю, что понимаю, чего ты хочешь, держись, я уточню свой ответ. – EvilZebra

1

завод должен вернуть объект из factory, так что будут выставлены через заводские потребителю через инъекционные свою зависимость.

Код

app.factory('$formServices', ['$http', '$q', function($http, $q) { 
    function postSubmit(fData) { 
     return $http({ 
      url: 'forms/Form1.php', 
      method: "POST", 
      data: { 
       items: JSON.stringify(fData) 
      } 
     }); 
    } 
    // should object 
    return { 
     postSubmit: postSubmit //link post submit to function 
    } 
}]); 
+0

Я раньше не знал этого синтаксиса, спасибо! – Xgongiveittoya

+0

@Xgongiveittoya это рефакторинг вашего кода .., который выглядит лучше, чтобы читать и понимать :) –

+0

А я вижу, что он просто берет коллекцию объектов и функций и возвращает их все вместе, вместо того, чтобы добавлять их к объекту, затем вернет объект. – Xgongiveittoya

1

Вопрос заключается в том, что ваш завод не возвращает объект. Чтобы узнать больше об этом я предлагаю читать https://docs.angularjs.org/guide/providers

ответ Evilzebra был бы работать, я верю, но если вы когда-либо хотели иметь больше функциональных возможностей в вашем заводе, хороший способ структурировать фабрики является:

app.factory('$formServices',['$http','$q',function ($http, $q) { 
      var service = {}; 
      service.postSubmit = function (fData) { 
       return $http({ 
        url: 'forms/Form1.php', 
        method: "POST", 
        data: { items: JSON.stringify(fData) } 
       }); 
      } 
      return service; 
    }]); 

Это будет позволяют добавлять дополнительные функции, добавляя их к объекту службы.

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