Подтвердить что ты не робот

AngularJS $http.post(..) - Ошибка: $http не определен

Я впервые опробую AngularJS. При использовании функции $http.post("url", data) я получаю консольное сообщение Error: $http is not defined.

В верхней части моей страницы HTML я включаю AngularJS после всех других импортных поставок JS.

Я также включил другие библиотеки JavaScript из-за зависимостей виджета и т.д. Раздел импорта script выглядит следующим образом:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script src="http://www.trirand.com/blog/jqgrid/js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="http://www.trirand.com/blog/jqgrid/js/jquery.jqGrid.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>

У меня есть контроллер, который я использую для отправки некоторых данных на сервер:

function FormCtrl($scope) {
  $scope.sendData = function(){
        var data = "firstName=" + $scope.firstName + "&" +
            "lastName=" + $scope.lastName + "&" +
            "address=" + $scope.address + "&" +
            "postcode=" + $scope.postcode;

        $http.post("/data/person/put", data);
     };
}

Функция sendData прикреплена к кнопке. Все работает нормально до вызова $http.post(...), после чего консоль выводит ошибку.

Полный список ошибок:

Error: $http is not defined
[email protected]://localhost:8080/angularjs/:96
Mc/x/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:71
ec[c]</</</<@https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:142
[email protected]://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:87
[email protected]://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:87
ec[c]</</<@https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js:142
[email protected]://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:63
c.event.add/[email protected]://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:57

https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js
Line 61

Нужно ли мне что-то делать, чтобы настроить AngularJS на использование функции $http.post?

Я снял использование прямо из раздела AngularJS Shortcut Methods документации здесь: http://docs.angularjs.org/api/ng.$http p >

Может ли кто-нибудь помочь?

Спасибо Адам

4b9b3361

Ответ 1

function FormCtrl($scope) { должен быть function FormCtrl($scope, $http) {.

Вам нужно внедрить все службы, необходимые для контроллера, в этом случае вы используете службу $scope и $http, но вы указали только $scope, что является причиной ошибки.

Пример:

function FormCtrl($scope, $http) {
    ....
}
FormCtrl.$inject = ['$scope', '$http'];

Вы можете прочитать заметку об осложнениях при инъекции с миниатюрой здесь, прочитать A Note on Minification