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

时间:2016-01-21 02:04:19

标签: javascript angularjs

我正在尝试创建一个服务来为我的角度应用程序和它所谈到的服务器之间的集成提供一个js api。但是,每当我尝试在服务中使用$ 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函数 console.log($ http)打印未定义的

提前感谢您的帮助。

编辑:在elipses之后添加了MainCtrl注册

1 个答案:

答案 0 :(得分:0)

$scope.broker = new broker();

您的经纪人来自您new的{​​{1}}函数,而不是由角度服务注入,因此MainCtrl未定义。