2012-12-07 17 views
191

Ho la seguente funzione angolare:

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

Ma ogni volta che si chiama questa funzione, sto ottenendo ReferenceError: $http is not defined nella mia console. Qualcuno può aiutarmi a capire cosa sto facendo male qui?

risposta

360

Probabilmente non è stato iniettato il servizio $http sul controller. Ci sono diversi modi per farlo.

Leggere this reference about DI. Poi diventa molto semplice:

function MyController($scope, $http) { 
    // ... your code 
} 
+16

Grazie! Mi chiedo perché la documentazione di Angular (http://docs.angularjs.org/tutorial/step_05) abbia questo errore. – Anurag

79

Ho passato con lo stesso problema quando stavo usando

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

ho cambiato il codice qui sopra per indicato di seguito. Ricordati di includere $ http (2 volte) come indicato di seguito.

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

e Ha funzionato bene.

0

Solo per completare Amit Garg answer, esistono diversi modi per iniettare le dipendenze in AngularJS.


È inoltre possibile utilizzare $inject per aggiungere una dipendenza:

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