AngularJS拦截器仅适用于GET请求

时间:2017-02-03 13:48:39

标签: javascript angularjs fullcalendar interceptor

我正在尝试使用拦截器来拦截我的ajax请求,但它仅适用于GET请求,我尝试使用POSTPUT,但注意接缝要执行特技。有什么想法?
这是我如何创建我的拦截器

app.factory('httpInterceptor', ['$q', '$location', '$injector',
function ($q, $location, $injector) {
    return {
        request: function(config) {
            var AuthService = $injector.get('AuthService');
            console.log(AuthService.getCurrentUser(), AuthService.getCurrentUser().key);
            if(config.usingKey === true) config.headers['X-API-KEY'] = AuthService.getCurrentUser().key;
            if(config.beforeSend && typeof config.beforeSend == "function") config.beforeSend();
            return config;
        }
    };
}]);

我正在使用此服务拨打电话

angular.module('myapp')
.service('EventService', ['$filter', '$http', 'CONFIG', function ($filter, $http, CONFIG) {
    this.create = function(params, beforeSend, usingkey) {
        if(usingkey == null) usingkey = true;
        return $http.put(CONFIG.DEV ? CONFIG.URL_API_DEV + "event" : CONFIG.URL_API + "event", {params: params, beforeSend: beforeSend, usingKey: usingkey})
    };
}]);

最后我使用此代码调用我的服务。

 select: function (start, end, jsEvent, view, resourceObj) {
    EventService.create({}, function(){
        $('.status').find('i').removeClass("fa-check").addClass("fa-spin fa-circle-o-notch");
    }).then(function($data){
        $('.status').find('i').removeClass("fa-spin fa-circle-o-notch").addClass('fa-check');
        event.realid = $data.data.value.id;
        Calendar.fullCalendar('updateEvent', event);
    }, function(err){
        $('.status').find('i').removeClass("fa-spin fa-circle-o-notch").addClass('fa-close').css({'color': 'red'});
        toastr.error(err);
    });
    $scope.$apply(); // The $apply is for another part of the code, it is required.
 }

如果您有任何想法,请告诉我, 谢谢,祝你有个美好的一天!

  • Nic

0 个答案:

没有答案