Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angularjs中从另一个服务方法调用工厂方法?_Javascript_Html_Angularjs_Interceptor_Factory Method - Fatal编程技术网

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;
        }
     }
}}])