以下のAngular関数があります。
$scope.updateStatus = function(user) {
$http({
url: user.update_path,
method: "POST",
data: {user_id: user.id, draft: true}
});
};
しかし、この関数が呼び出されるたびに、コンソールにReferenceError: $http is not defined
が表示されます。誰かが私がここで間違っていることを理解するのを手伝ってくれる?
おそらくあなたはあなたのコントローラに$http
サービスを注入していません。それにはいくつかの方法があります。
DIに関するこのリファレンス をお読みください。それからそれはとても簡単になります:
function MyController($scope, $http) {
// ... your code
}
私が使用していたとき私は同じ問題を経験しました
myApp.controller('mainController', ['$scope', function($scope,) {
//$http was not working in this
}]);
上記のコードを以下のように変更しました。下記のように$ http(2回)を含めることを忘れないでください。
myApp.controller('mainController', ['$scope','$http', function($scope,$http) {
//$http is working in this
}]);
そしてそれはうまくいった。
Amit Garg answer を完了するために、AngularJSに依存関係を注入する方法はいくつかあります。
依存関係を追加するために $inject
を使うこともできます。
var MyController = function($scope, $http) {
// ...
}
MyController.$inject = ['$scope', '$http'];