我有一个这样的工厂:
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未定义
任何人都可以帮我解决这个错误。
提前多多感谢。
答案 0 :(得分:2)
您使用数组表示法声明您的服务,将依赖项的名称注入后跟定义工厂的函数。但是你说你只想注入证书:
app.factory('LoginService', [
'Credentials',
function(Credentials, $location, LoginFactory) {
所以angular只注入凭据。上面应该用
代替app.factory('LoginService', [
'Credentials', '$location', 'LoginFactory'
function(Credentials, $location, LoginFactory) {
为避免这些错误,以及数组和函数中服务名称的重复,我强烈建议您在构建中使用ngAnnotate。