javascript - 如何从AngularJS中的另一个服务方法调用工厂方法?

标签 javascript html angularjs interceptor factory-method

我有一个工厂方法......

(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);

它显示一个错误..未捕获类型错误:未定义不是一个函数。 请任何人帮助我解决这个错误..

最佳答案

使用$injector服务来解决这个问题。 Example :

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

关于javascript - 如何从AngularJS中的另一个服务方法调用工厂方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565651/

相关文章:

javascript - 为什么 ng-repeat 不起作用?

javascript - 使用 groupby 格式化 Json 对象

javascript - 努力解决添加到购物车本地存储逻辑

javascript - 将 Canvas 元素分配给 img.src

javascript - 如何在 Javascript 中用数组对象的值中的其他子字符串替换子字符串?

javascript - 为什么当我在单独的函数中使用 $(this) 并在 .each() 中调用它时它不起作用?

javascript - 选择两个单选按钮

jquery - 使用 FontAwesome 等图标字体时,如何使图标在 jQuery 中可绑定(bind)?

javascript - 是否可以加载图像,在内存中对其进行缩放并将其分配为背景图像的 uri?

javascript - 是否可以在 Javascript 中将选择器作为函数参数传递?