Angular onreadystatechange

时间:2014-11-26 17:16:08

标签: javascript angularjs ajax

Angular新手在这里。我想知道是否可以使用 $ http 服务在任何准备好的状态/状态更改时调用函数,而不仅仅是成功/失败。 在代码方面,它将是以下 JS 代码的等效角度代码:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function() {
    if (xhr.readyState < 4 && xhr.status != 200)
        alert('Loading');
}
xhr.open...
xhr.send...

2 个答案:

答案 0 :(得分:1)

该事件不再在1.3+中使用,并且不会暴露,仅在1.2中使用状态4.

做这样的事情的唯一方法(如果你真的想要)将是替换或装饰$ httpBackend ...

请参阅http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.js

中的createHttpBackend()

答案 1 :(得分:0)

我成功使用的另一个选择是在$ http调用之后调用$ scope。$ apply():

// using $http
var promise = $http.get(url).then(success, ...); 

// without $http
$.ajax({
     url: url,
     success: function() {
         success();
         $scope.$apply(); // if you'd used $http, this would be unnecessary
     },
     ...
});