我熟悉
Jquery AJAX call,它具有不同的回调,如BeforeSend,成功,完成等.
这是使用Jquery的AJAX调用示例:
@H_301_3@$.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图像)在我的代码:
默认情况下Angular不提供beforeSend并完成,但您可以使用拦截器实现它们.这是我的实现:
@H_301_3@(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;
}
};
}]);
})();
@H_301_3@(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: "/" });
}]);
})();
这段代码可以这样使用:
@H_301_3@var promise = $http({ method: 'POST',url: constants.server + '/emails/send',data: model,beforeSend: function() { model.waiting = true; },complete: function() { model.waiting = false; } });