AngularJs ReferenceError: $ http не определен


199

У меня есть следующая угловая функция:

$scope.updateStatus = function(user) {    
    $http({
        url: user.update_path, 
        method: "POST",
        data: {user_id: user.id, draft: true}
    });
};

Но всякий раз, когда эта функция вызывается, я попадаю ReferenceError: $http is not definedв консоль. Может ли кто-нибудь помочь мне понять, что я здесь делаю неправильно?

Ответы:


373

Возможно, вы не внедрили $httpсервис для вашего контроллера. Есть несколько способов сделать это.

Пожалуйста, прочитайте эту ссылку о DI . Тогда это становится очень просто:

function MyController($scope, $http) {
   // ... your code
}

18
Спасибо! Интересно, почему в собственной документации Angular ( docs.angularjs.org/tutorial/step_05 ) есть эта ошибка.
Anurag

81

Я прошел через ту же проблему, когда я использовал

    myApp.controller('mainController', ['$scope', function($scope,) {
        //$http was not working in this
    }]);

Я изменил приведенный выше код на приведенный ниже. Не забудьте включить $ http (2 раза), как указано ниже.

 myApp.controller('mainController', ['$scope','$http', function($scope,$http) {
      //$http is working in this
 }]);

и это сработало хорошо.


4

Чтобы завершить ответ Амит Гарг , есть несколько способов внедрить зависимости в AngularJS.


Вы также можете использовать $injectдля добавления зависимости:

var MyController = function($scope, $http) {
  // ...
}
MyController.$inject = ['$scope', '$http'];
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.