web-dev-qa-db-fra.com

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

J'ai la fonction Angular 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 defined dans ma console. Est-ce que quelqu'un peut m'aider à comprendre ce que je fais mal ici?

195
Sabarish Sankar

Vous n'avez probablement pas injecté le service $http à votre contrôleur. Il y a plusieurs façons de le faire.

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

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

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

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

J'ai changé le code ci-dessus à 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é.

80
Amit Garg

Juste pour terminer réponse Amit Garg , il existe plusieurs façons d’injecter des dépendances dans AngularJS.


Vous pouvez également utiliser $inject pour ajouter une dépendance:

_var MyController = function($scope, $http) {
  // ...
}
MyController.$inject = ['$scope', '$http'];
_
4
Mistalis