在Angularjs中的jQuery ajax beforeSend相当于什么?

前端之家收集整理的这篇文章主要介绍了在Angularjs中的jQuery ajax beforeSend相当于什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我熟悉 Jquery AJAX call,它具有不同的回调,如BeforeSend,成功,完成等.

这是使用Jquery的AJAX调用示例:

$.ajax({
  url: 'register.PHP',type: 'POST',data: {name:name,email:email},beforeSend: function() {
       // show loading GIF
  },complete: function() {
      // hide loading GIF
  },success: function(data) {
      // parse response
  }
});

我想使用AngularJS实现相同的使用.

对于AngularJS AJAX请求,是否有类似beforeSend的回调?
这是我的代码到目前为止,但我不知道在哪里可以使用回调像beforeSend(以便我可以显示加载GIF图像)在我的代码

$http.post('register.PHP',{'name': $scope.name,'email': $scope.email})
.success(function(data,status,headers,config) {
    if (data != '') { 
    }
});
默认情况下Angular不提供beforeSend并完成,但您可以使用拦截器实现它们.这是我的实现:
(function() {
    var app = angular.module("app");

    app.factory("interceptors",[function() {

        return {

            // if beforeSend is defined call it
            'request': function(request) {

                if (request.beforeSend)
                    request.beforeSend();

                return request;
            },// if complete is defined call it
            'response': function(response) {

                if (response.config.complete)
                    response.config.complete(response);

                return response;
            }
        };

    }]);

})();

那么你必须这样注册你的拦截器:

(function () {
        var app = angular.module('app',['ngRoute']);


        app.config(["$routeProvider","$httpProvider",function ($router,$httpProvider) {    

            // Register interceptors service
            $httpProvider.interceptors.push('interceptors');

            $router.when("/",{ templateUrl: "views/index.html" })


            .otherwise({ redirectTo: "/" });        
        }]);
    })();

这段代码可以这样使用:

var promise = $http({
    method: 'POST',url: constants.server + '/emails/send',data: model,beforeSend: function() {
        model.waiting = true;
    },complete: function() {
        model.waiting = false;
    }
});

猜你在找的Angularjs相关文章