我是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();
};
答案 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)
现在您的工厂将按预期工作。