尽管注入了$http,但它在服务中是未定义的

$http is undefined in service despite injecting it

本文关键字:服务 未定义 注入 http      更新时间:2023-09-26

我正在尝试创建一个服务来提供js api,用于在我的Ang应用程序与其通信的服务器之间进行集成。但是,每当我尝试在服务中使用$http时,它都是未定义的。

该服务在我的主控制器中实例化为 $scope.broker:

function MainCtrl($scope, $http) {
    $scope.broker = new broker();
...
angular
.module('inspinia')
.controller('MainCtrl', ['$scope','$http',MainCtrl])

然后,该服务在连接到同一模块的控制器中使用:

function locations($scope, $http){
console.log($scope.broker.ping);
$scope.broker.ping();
angular.module('sentry.locations', [])
.controller('locations', ['$scope','$http', locations]);

服务定义:

function broker($http) {
    var baseurl = 'localhost:8000';
    var broker = {};
    broker.ping = function() {
        console.log(this);
        $http({
            method: 'GET',
            url: baseurl + '/hello'
        })
    };
    console.log($http);
    return broker;
};
angular.module('inspinia')
    .factory('broker', ['$http', broker]);

console.log($scope.broker.ping) 正确打印 ping 函数。
控制台.log($http) 打印未定义

提前感谢任何帮助。

编辑:省略号后添加了 MainCtrl 注册

$scope.broker = new broker();

您的代理来自MainCtrl中的new函数,而不是由 Angular 服务注入,因此$http是未定义的。