如何在角度服务中使用注入依赖?

时间:2015-07-07 10:52:30

标签: angularjs

我正在创建一个自定义服务,将用户登录到我的系统。在这项服务中,我需要使用$http等核心服务 - 我如何真正依赖这些服务才能在我的服务中使用?

我目前的代码:

.factory('loginService', ['$http', '$rootScope', function() {

        var login = function(){
            console.log($http);
        }

        return {login : login};

}])

我从像这样的控制器调用登录功能

loginService.login();

我希望我的控制台会输出我注入的$http对象,但是它返回undefined。

如何以正确的方式访问此内容?

3 个答案:

答案 0 :(得分:3)

您需要将依赖项添加到函数参数中:

.factory('loginService', ['$http', '$rootScope', function($http, $rootScope) {
    //You can use $http and $rootScope here now
}

有关角度

中的依赖注入的详细信息,请参阅the official docs

答案 1 :(得分:0)

您注入的服务需要作为函数的参数传递:

['$http', '$rootScope', function($http, $rootScope)

顺便说一句,你需要在尝试使用它的地方做同样的事情:

app.controller(['loginService', function (loginService) {
  loginService.login();
});

答案 2 :(得分:0)

试试这个:

var myapp = angular.module('mainApp', []);

myapp.controller('myController', ['$scope', 'myFactory', function($scope, myFactory) {
    myFactory.login();
}]);

myapp.factory('myFactory', ['$http', function($http) {
    var services = {};

    services.login = function() {
      console.log($http);
    }

    return services;
}]);

查看:

<div ng-app='mainApp' ng-controller='myController'></div>