Javascript 将服务注入AngularJS中的另一个服务

Javascript 将服务注入AngularJS中的另一个服务,javascript,angularjs,Javascript,Angularjs,我正在尝试实现AngularJS应用程序的登录模块。我尝试从(此)authenticationService调用UserService,但UserService未定义。我现在做错了什么,为什么UserService没有定义 var authenticationService = angular.module('authenticationService', []); authenticationService.factory('authenticationSvc', ['$http', '$c

我正在尝试实现AngularJS应用程序的登录模块。我尝试从(此)authenticationService调用UserService,但UserService未定义。我现在做错了什么,为什么UserService没有定义

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

authenticationService.factory('authenticationSvc', ['$http', '$cookieStore', '$rootScope', '$timeout', 'UserService',

function AuthenticationService($scope, $http, $cookieStore, $rootScope, $timeout, UserService) {
    var service = {};

    service.Login = Login;
    service.SetCredentials = SetCredentials;
    service.ClearCredentials = ClearCredentials;

    return service;

function Login(username, password, callback) {
        var response;

        UserService.GetByUsername(username) //UserService is unidefined!!!
                .then(function (user) {
                    if (user !== null && user.password === password) {
                        response = { success: true };
                    } else {
                        response = { success: false, message: 'Username or password is incorrect' };
                    }
                    callback(response);
                });

    }

编辑:看看依赖项注入:依赖项数组中的元素数应该与函数中的参数数相同。将
$scope
注入数组中,而不是参数中。您应该始终以正确的顺序将每一个依赖项都注入到这两者中:这里,
$scope
对应于您的
$http
参数,
$http
服务对应于您的
$cookieStore
参数,依此类推,直到
UserService
引用依赖项数组的第6个元素,即。。。未定义

试一试

相反

还有,这条线,

 var authenticationService = angular.module('authenticationService', []);
您创建了一个没有依赖项的新模块(
[]
)我猜
用户服务
是在另一个模块中定义的,该模块既没有注入到当前服务模块中,也没有注入到应用程序的主模块中,因此不可用

对于记录:
angular.module(名称,数组)
创建一个新模块,该模块取决于数组中传递的模块<代码>角度。模块(名称)检索以前创建的模块

不过,我认为您不需要为单个服务安装新模块。如果在与
用户服务
相同的模块中定义身份验证服务,则默认情况下该服务可用


编辑:另外,请注意您的命名模式:例如,给定您的代码,如果我想将身份验证服务作为服务依赖项包括在内,我必须包括
authenticationSvc
,而不是
authenticationService

,因此,当我调用factory并尝试向UserService添加依赖项时,这还不够?如果他们在同一个模块中就足够了。但事实并非如此。相反,您必须将模块作为模块依赖项注入,然后将服务本身作为服务依赖项注入。@Sami Tieselune是正确的,根据建议的设计,您应该将所有服务保留在同一个模块中。错误如下:(TypeError:无法读取未定义的属性“GetByUsername”。在我的“设计”中每个服务都在自己的文件中,当使用ngResource时,我没有这个问题。实际上,我想我知道这里出了什么问题。我正在立即更新我的答案。
 var authenticationService = angular.module('authenticationService', []);