Błąd AngularJs ReferenceError: $ http nie jest zdefiniowany

199

Mam następującą funkcję kątową:

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

Ale gdy wywoływana jest ta funkcja, wchodzę do ReferenceError: $http is not definedkonsoli. Czy ktoś może mi pomóc zrozumieć, co robię źle tutaj?

Pulchny chłopiec
źródło

Odpowiedzi:

373

Prawdopodobnie nie wstrzyknąłeś $httpusługi do kontrolera. Można to zrobić na kilka sposobów.

Przeczytaj to odniesienie na temat DI . To staje się bardzo proste:

function MyController($scope, $http) {
   // ... your code
}
ŁukaszBachman
źródło
18
Dzięki! Zastanawiam się, dlaczego własna dokumentacja Angulara ( docs.quarejs.org/tutorial/step_05 ) ma ten błąd.
Anurag
81

Przeszedłem ten sam problem, kiedy korzystałem

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

Zmieniłem powyższy kod na podany poniżej. Pamiętaj, aby podać $ http (2 razy), jak podano poniżej.

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

i działało dobrze.

Amit Garg
źródło
4

Aby wypełnić odpowiedź Amit Garg , istnieje kilka sposobów na wstrzyknięcie zależności w AngularJS.


Możesz także użyć $injectdo dodania zależności:

var MyController = function($scope, $http) {
  // ...
}
MyController.$inject = ['$scope', '$http'];
Mistalis
źródło