Javascript 如何在angularjs中从另一个服务方法调用工厂方法?
我有一个工厂方法,如Javascript 如何在angularjs中从另一个服务方法调用工厂方法?,javascript,html,angularjs,interceptor,factory-method,Javascript,Html,Angularjs,Interceptor,Factory Method,我有一个工厂方法,如 (function (angular) { "use strict"; angular .module('app') .factory('UserService', ['$rootScope', '$q', function ($rootScope, $q) { var markCurrentUserAsContentOwner = function () {
(function (angular) {
"use strict";
angular
.module('app')
.factory('UserService', ['$rootScope', '$q', function ($rootScope, $q) {
var markCurrentUserAsContentOwner = function () {
var user = getCurrentUser(true);
user.set('isContentOwner',"true");
user.save(null, {
success: function(savedUser) {
alert("succes");
},
error: function(savedUser,error) {
alert("error");
}
});
};
}]);
})(angular);
现在,如果我从另一个服务方法调用此方法
(function(angular) {
'use strict';
angular
.module('app')
.service('ContentOwnerService',
[
'$q', 'UserService'
function($q, userService) {
var servicemethod=function() {
userService.markCurrentUserAsContentOwner();//UserService is the factory name
};
}]);
})(angular);
它显示了一个错误。.未捕获的TypeError:undefined不是一个函数。
请任何人帮助我解决此错误。使用
$injector
服务解决此问题。
:
如果没有看到工厂的主体,很难判断,但我猜你只需要在工厂返回时公开功能。你是否将工厂服务注入控制器?请提供所有代码我已添加代码完整代码请查看
session.factory('redirectInterceptor', ['$injector','$rootScope', '$timeout', '$q', '$window', function($injector,$rootScope, $timeout, $q, $window) {
return {
'request': function(req) {
req.headers['CustomHeader'] = "Be Creative!";
return req || $q.when(req);
},
'response': function(response) {
if (response.data.Status === 'Failed...') {
var AuthenticationService = $injector.get('AuthenticationService');
AuthenticationService.ClearCredentials();
$window.location.href = "/#/login";
$timeout(function() {
$rootScope.sessiondata = true;
}, 5000)
return $q.reject(response);
} else {
return response;
}
}
}}])