为什么依赖注入另一家工厂内的工厂失败?

时间:2014-08-23 06:26:31

标签: angularjs angularjs-factory

我有一个这样的工厂:

    app.factory('LoginFactory', [ '$scope', '$http', function($scope, $http) {
        var urlBase = "http://localhost:8080/app";
        var fact = {};
        fact.login = function(userinfo) {
            return $http({
                method : 'POST',
                url : urlBase + '/login',
                data : userinfo,
                headers : {
                    'Content-Type' : 'application/json',
                    'Accept' : 'application/json'
                }
            });
        };
        fact.validate = function(sessionId) {
            return $http({
                method : 'GET',
                url : urlBase + '/validate?sessionId=' + sessionId,
            });
        };
        return fact;
    } ]);

另一家工厂是这样的:

    app.factory('LoginService', [
            'Credentials',
            function(Credentials, $location, LoginFactory) {
                var fact = {};
                fact.isLoggedin = function() {
                    var result = false;
                    LoginFactory.validate(Credentials.sessionId).success(
                            function(data, status, headers, config) {
                                result = true;
                            }).error(function(data, status, headers, config) {
                        result = false;
                    });
                    return result;
                };
                fact.authenticate = function(userinfo) {
                    LoginFactory.login(userinfo).success(
                            function(data, status, headers, config) {
                                Credentials = data;
                                $location.path('/home');
                            }).error(function(data, status, headers, config) {
                        $location.path('/login');
                    });
                };
                return fact;
            } ]);

在浏览器控制台中,我收到以下错误:

错误:LoginFactory未定义

任何人都可以帮我解决这个错误。

提前多多感谢。

1 个答案:

答案 0 :(得分:2)

您使用数组表示法声明您的服务,将依赖项的名称注入后跟定义工厂的函数。但是你说你只想注入证书:

app.factory('LoginService', [
        'Credentials',
        function(Credentials, $location, LoginFactory) {

所以angular只注入凭据。上面应该用

代替
app.factory('LoginService', [
        'Credentials', '$location', 'LoginFactory'
        function(Credentials, $location, LoginFactory) {

为避免这些错误,以及数组和函数中服务名称的重复,我强烈建议您在构建中使用ngAnnotate