AngularJs ReferenceError: $ http n'est pas défini

199

J'ai la fonction angulaire suivante:

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

Mais chaque fois que cette fonction est appelée, je reçois ReferenceError: $http is not defineddans ma console. Quelqu'un peut-il m'aider à comprendre ce que je fais mal ici?

Garçon grassouillet
la source

Réponses:

373

Vous n'avez probablement pas injecté de $httpservice sur votre contrôleur. Il y a plusieurs façons de procéder.

Veuillez lire cette référence sur DI . Ensuite, cela devient très simple:

function MyController($scope, $http) {
   // ... your code
}
ŁukaszBachman
la source
18
Merci! Je me demande pourquoi la propre documentation d'Angular ( docs.angularjs.org/tutorial/step_05 ) a cette erreur.
Anurag
81

J'ai vécu le même problème lorsque j'utilisais

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

J'ai changé le code ci-dessus en donné ci-dessous. N'oubliez pas d'inclure $ http (2 fois) comme indiqué ci-dessous.

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

et cela a bien fonctionné.

Amit Garg
la source
4

Juste pour compléter la réponse d'Amit Garg , il existe plusieurs façons d'injecter des dépendances dans AngularJS.


Vous pouvez également utiliser $injectpour ajouter une dépendance:

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