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 ) є така помилка.
Анураг

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.