201

我有以下角度功能:

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

但是每当调用这个函数时,我都会进入ReferenceError: $http is not defined我的控制台。有人可以帮我理解我在这里做错了什么吗?

4

3 回答 3

376

可能您还没有向$http控制器注入服务。有几种方法可以做到这一点。

请阅读有关 DI 的参考资料。然后它变得非常简单:

function MyController($scope, $http) {
   // ... your code
}
于 2012-12-07T08:12:09.550 回答
82

我在使用时遇到了同样的问题

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

它运作良好。

于 2014-03-02T08:58:20.983 回答
4

只是为了完成Amit Garg 的回答,有几种方法可以在 AngularJS 中注入依赖项。


您还可以使用$inject添加依赖项:

var MyController = function($scope, $http) {
  // ...
}
MyController.$inject = ['$scope', '$http'];
于 2016-10-20T09:40:26.047 回答