AngularJS - 如何在使用$ resources时保留UI状态

时间:2014-07-10 10:37:23

标签: javascript angularjs asynchronous

在我的应用中,用户可以创建/删除项目。我使用$ resources,它就像一个魅力。但是我想在请求正在进行时显示加载屏幕。

// show loading-screen
// ...

Item.destroy({'id': item.id}, function( response ){
  // handle success
  // ...

  // hide loading-screen
}, function( error ){
  // handle error 
  // ...

  // hide loading-screen
});

但是我每次编写资源调用时都不会显示/隐藏加载屏幕而是配置资源模块,因此只要资源加载数据,就会自动调用show / hide加载屏幕。

有没有办法配置资源模块来实现呢?

1 个答案:

答案 0 :(得分:1)

您可以使用$http.pendingRequests数组查看是否有一些待处理的请求。

角度种子项目的示例:https://github.com/rpeterson/angular-seed/blob/master/client/src/common/services/httpRequestTracker.coffee

angular.module('services.httpRequestTracker', [])

.factory('httpRequestTracker', ['$http',
    function($http) {

        var httpRequestTracker = {};
        httpRequestTracker.hasPendingRequests = function() {
            return $http.pendingRequests.length > 0;
        };

        return httpRequestTracker;
    }
]);

然后你只需创建一个ng-show="httpRequestTracker.hasPendingRequests"的专用加载指令,例如

请注意,使用此解决方案,您只需知道是否有待处理的请求,您就不知道哪一个(如果您的页面上有多个ajax请求,则可能会非常棘手)