AngularJs ReferenceError: $ http ist nicht definiert

199

Ich habe folgende Winkelfunktion:

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

Aber wenn diese Funktion aufgerufen wird, steige ich ReferenceError: $http is not definedin meine Konsole ein. Kann mir jemand helfen zu verstehen, was ich hier falsch mache?

Molliger Junge
quelle

Antworten:

373

Wahrscheinlich haben Sie $httpIhrem Controller keinen Service zugeführt. Dafür gibt es verschiedene Möglichkeiten.

Bitte lesen Sie diese Referenz über DI . Dann wird es sehr einfach:

function MyController($scope, $http) {
   // ... your code
}
ŁukaszBachman
quelle
18
Vielen Dank! Ich frage mich, warum Angulars eigene Dokumentation ( docs.angularjs.org/tutorial/step_05 ) diesen Fehler aufweist.
Anurag
81

Ich habe das gleiche Problem durchlaufen, als ich verwendet habe

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

Ich habe den obigen Code in den unten angegebenen geändert. Denken Sie daran, $ http (2 Mal) wie unten angegeben anzugeben.

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

und es hat gut funktioniert.

Amit Garg
quelle
4

Um die Antwort von Amit Garg zu vervollständigen , gibt es verschiedene Möglichkeiten, Abhängigkeiten in AngularJS einzufügen.


Sie können auch $injecteine Abhängigkeit hinzufügen:

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