beforeSend上的角度拦截器代码不起作用

时间:2014-03-30 20:39:15

标签: javascript angularjs interceptor

我正在使用以下代码,我希望首先推送标头,然后是请求。使用JQuery,我只需添加beforeSend,工作正常。但我已经改为AngularJS(我很喜欢......)我对拦截器感到困惑!

令我困惑的是,如果我想首先发送标题,我在哪里告诉它,在哪里发送标题。看一下这个并不多的例子,在发送之前也是如此,我要么不理解,要么没有看到任何适合我的问题。

代码:



    App.factory('postCemment', function($q,requestInterceptor, $http) {

        return {
            fnsend: function(sid, author, comment, callback) {
                $http.Provider.interceptors.push(requestInterceptor);
                $http.post("https://api.appery.io/rest/1/db/collections/comments/",
                    {
                        headers: {"Content-Type": 'application/x-www-form-urlencoded'},
                        params: {comment_author : author, comment : comment, statement_id : sid}
                    })
                    .success(function(commentres) {
                        callback(commentres);
                    })
            }
        }
     })

    App.factory('requestInterceptor', function() {
        return {
                'request': function(config) {
                    config.headers = {"X-Appery-Database-Id": dbid}
                    console.log(config);
                    return config;
                }
            }
    })

    App.controller('addCommentBox', function($scope, $http, $routeParams, postCemment) {
        $scope.addCommentData = function() {
            postCemment.fnsend($routeParams.id,$scope.aurhor,$scope.comment, function(res) {
                console.log(res);
            })
        }
    })

如果我尝试没有任何类型的拦截器,我只会收到一个错误,即未指定数据库,即使我可以在浏览器开发屏幕的标题中看到它。

我之前使用过$ q并且推迟了,我确实读过这可能是必需的,因为有些例子没有使用它,但这就是混乱的地方。即使推迟,我还能推迟什么时候?

提前致谢。

安德鲁

0 个答案:

没有答案