angular, factory Ошибка: AuthFactory.getUserInfo не является функцией

я новичок в Angular. Я пытаюсь создать фабрику, но получаю сообщение об ошибке: AuthFactory.getUserInfo не является функцией. Может ли кто-нибудь помочь мне?

Мой код:

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

});

заголовок.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();
};

person Denis Protopopov    schedule 16.09.2015    source источник


Ответы (2)


Когда вы делаете DI, их последовательность действительно имеет значение

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

последовательность параметров неверна.

person maddygoround    schedule 16.09.2015
comment
Да, это так. Я уже нашел решение, параметры должны быть одинаковыми. Спасибо. - person Denis Protopopov; 17.09.2015

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)

теперь ваша фабрика будет работать так, как вы ожидали.

person Saravanan    schedule 16.09.2015