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。有人能帮我理解一下我做错了什么吗?

161990 次浏览

可能你还没有注入$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回答,有几种方法可以在AngularJS中注入依赖项。


你也可以使用$inject来添加一个依赖项:

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