AngularJs ReferenceError: $ http não está definido

199

Eu tenho a seguinte função Angular:

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

Mas sempre que essa função é chamada, estou entrando ReferenceError: $http is not definedno meu console. Alguém pode me ajudar a entender o que estou fazendo de errado aqui?

Menino gordinho
fonte

Respostas:

373

Provavelmente você não injetou $httpserviço no seu controlador. Existem várias maneiras de fazer isso.

Por favor, leia esta referência sobre DI . Então fica muito simples:

function MyController($scope, $http) {
   // ... your code
}
ŁukaszBachman
fonte
18
Obrigado! Gostaria de saber por que a própria documentação do Angular ( docs.angularjs.org/tutorial/step_05 ) tem esse erro.
Anurag
81

Passei pelo mesmo problema quando estava usando

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

Alterei o código acima para o dado abaixo. Lembre-se de incluir $ http (2 vezes), conforme indicado abaixo.

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

e funcionou bem.

Amit Garg
fonte
4

Apenas para completar a resposta de Amit Garg , existem várias maneiras de injetar dependências no AngularJS.


Você também pode usar $injectpara adicionar uma dependência:

var MyController = function($scope, $http) {
  // ...
}
MyController.$inject = ['$scope', '$http'];
Mistalis
fonte