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

标签 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
});

但是,我宁愿配置资源模块,而不是每次编写资源调用时显示/隐藏加载屏幕,这样每当资源加载数据时就会自动调用显示/隐藏加载屏幕。

有没有办法配置资源模块来实现这一点?

最佳答案

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

来自 Angular-Seed 项目的示例: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 请求,这可能会很棘手)

关于javascript - AngularJS - 如何在使用 $resources 时保留 UI 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24674384/

相关文章:

javascript - 将 bootstrap 模态值传递到 php

javascript - 成功更改密码后 Firebase 重定向到网页

在 AngularJS 中调用服务并使用 Karma 和 Jasmine 进行测试后,Angularjs 单元测试未命中 Controller 的一部分

javascript - AngularJS:避免在收到响应之前两次调用相同的 REST 服务

c# - 在 C# 中等待异步任务时会发生什么?

Javascript\Kango : How to get a return of an async JS function inside a non-async function?

javascript - 如何使用外部值检查数组的索引以生成新数组?

javascript - Ace Editor 添加 Marker 抛出错误

angularjs - 如何在 uibmodal 上使用自定义 css?如何为特定选择项自定义 uibmodal 的宽度和高度?

ios - swift 中的异步和同步有什么区别