2012-12-07 24 views
191

Mam następujący kątowa funkcję:

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

ale gdy ta funkcja jest wywoływana, jestem coraz ReferenceError: $http is not defined w mojej konsoli. Czy ktoś może mi pomóc zrozumieć, co robię źle tutaj?

Odpowiedz

360

Prawdopodobnie nie wprowadzono usługi $http do kontrolera. Jest na to kilka sposobów.

Proszę przeczytać this reference about DI. Wtedy staje się bardzo prosta:

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

Dzięki! Zastanawiam się, dlaczego ta własna dokumentacja (http://docs.angularjs.org/tutorial/step_05) firmy Angular ma ten błąd. – Anurag

79

I już przez tego samego problemu, kiedy używał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 dołączyć $ http (2 razy) jak podano poniżej.

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

i działa dobrze.

0

Wystarczy wypełnić Amit Garg answer, istnieje kilka sposobów wstrzykiwania zależności w AngularJS.


Można również użyć $inject dodać zależność:

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