我熟悉
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; } });