angular, фабрична грешка: AuthFactory.getUserInfo не е функция

аз съм нов в 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();
};

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