angular,factory错误:AuthFactory.getUserInfo不是函数

时间:2015-09-16 11:12:33

标签: angularjs factory

我是Angular的新手。我尝试创建工厂,但得到一个错误:AuthFactory.getUserInfo不是一个函数。有人能帮助我吗?

我的代码:

auth.factory.js:
angular.module('tsg').factory('AuthFactory', function() {
    return {
        getUserInfo: function getUserInfo(){
            console.log("AuthFactory.getUserInfo()");
            return "userInfo";
        }
      };

});

header.js:

angular.module('tsg').controller('HeaderCtrl',HeaderCtrl);

HeaderCtrl.$inject = ['$scope', '$rootScope', '$location','$cookieStore','AuthFactory'];
function HeaderCtrl($scope, $cookieStore, AuthFactory)
{   
    AuthFactory.getUserInfo();
    $scope.username = "UserName123";
    $scope.date = new Date();
};

2 个答案:

答案 0 :(得分:0)

当你做DI时,他们的顺序非常重要

HeaderCtrl.$inject = ['$scope', '$rootScope', '$location','$cookieStore','AuthFactory'];
function HeaderCtrl($scope, $cookieStore, AuthFactory)

参数序列不正确。

答案 1 :(得分:0)

HeaderCtrl.$inject = ['$scope', '$rootScope', '$location','$cookieStore','AuthFactory'];
function HeaderCtrl($scope, $cookieStore, AuthFactory)

在您的情况下,您的控制器内的AuthFactory实例不是您编写的工厂。它是$location服务的实例。你在注射过程中错放了它。

当您执行依赖注入时,请遵循以下正确的顺序:

HeaderCtrl.$inject = ['$scope', '$rootScope', '$location','$cookieStore','AuthFactory'];
function HeaderCtrl($scope, $rootScope,$location,$cookieStore, AuthFactory)

现在您的工厂将按预期工作。