web-dev-qa-db-ja.com

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

以下のAngular関数があります。

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

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

195
Sabarish Sankar

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

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

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

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

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

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

80
Amit Garg

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


依存関係を追加するために $inject を使うこともできます。

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