AngularJs ReferenceError: $ http no está definido

199

Tengo la siguiente función angular:

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

Pero cada vez que se llama a esta función, me meto ReferenceError: $http is not defineden mi consola. ¿Alguien puede ayudarme a entender lo que estoy haciendo mal aquí?

Gordito chico
fuente

Respuestas:

373

Probablemente no haya inyectado $httpservicio a su controlador. Hay varias formas de hacerlo.

Lea esta referencia sobre DI . Entonces se vuelve muy simple:

function MyController($scope, $http) {
   // ... your code
}
ŁukaszBachman
fuente
18
¡Gracias! Me pregunto por qué la propia documentación de Angular ( docs.angularjs.org/tutorial/step_05 ) tiene este error.
Anurag
81

He pasado por el mismo problema cuando estaba usando

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

He cambiado el código anterior al siguiente. Recuerde incluir $ http (2 veces) como se indica a continuación.

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

y ha funcionado bien.

Amit Garg
fuente
4

Solo para completar la respuesta de Amit Garg , hay varias formas de inyectar dependencias en AngularJS.


También puede usar $injectpara agregar una dependencia:

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