AngularJs ReferenceError:$ httpが定義されていません


199

次のAngular関数があります。

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

しかし、この関数が呼び出されるときはいつでも、私はReferenceError: $http is not defined自分のコンソールに入っています。誰かが私がここで間違っていることを理解するのを手伝ってくれる?

回答:


373

おそらく、$httpサービスをコントローラーに注入していません。それにはいくつかの方法があります。

DIに関するこのリファレンスをお読みください。それからそれは非常に簡単になります:

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

18
ありがとう!なぜAngular自身のドキュメント(docs.angularjs.org/tutorial/step_05)にこのエラーがあるのでしょうか。
Anurag 2013年

81

私が使用していたときに私は同じ問題を経験しました

    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
 }]);

そしてそれはうまくいった。


4

Amit Gargの回答を完了するためだけに、AngularJSに依存関係を注入する方法はいくつかあります。


を使用$injectして依存関係を追加することもできます。

var MyController = function($scope, $http) {
  // ...
}
MyController.$inject = ['$scope', '$http'];
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.