angularjs - 将 'isLoading' 变量添加到 $resource 服务( Angular )

标签 angularjs http service resources loading

我有一个使用 $resource 获取 API 数据的服务。我想包含一个 isLoaded 变量来定义 API 响应是否已执行。

我的服务目前看起来像这样:

    app.factory('PlayerService', ['$resource', function($resource) {

      return $resource(
        'http://api/endpoint', {player_id: "@player_id"}
      )

}]);

我想添加类似这样的功能(伪代码)...

    app.factory('PlayerService', ['$resource', function($resource) {

      $scope.isLoaded = false;

      return $resource(
        'http://api/endpoint', {player_id: "@player_id"}
      )

      $scope.isLoaded = "true";

}]);

...但我在语法上苦苦挣扎。我需要写一个单独的函数吗?这个逻辑是否需要包含在 Controller 而不是服务中?

感谢任何帮助。

最佳答案

无需添加 isLoaded 变量。

$resourse 服务中有一个 $resolved 方法可以完成您想要做的事情。请参阅有关 https://docs.angularjs.org/api/ngResource/service/ 的文档$资源:

$resolved: true after first server interaction is completed (either with success or rejection), false before that. Knowing if the Resource has been resolved is useful in data-binding.

例子:

var test = $resource('http://api/endpoint', {player_id: "@player_id"});
test.get(function(result) {
    console.log(result.$resolved);
});

result.$resolved 加载数据后为真。如果数据未加载,它将保持为 false。

关于angularjs - 将 'isLoading' 变量添加到 $resource 服务( Angular ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37609558/

相关文章:

javascript - 两个带有对象的数组成为具有相同长度的新数组,但所有数据都来自原始数组

javascript - 如何将 kendo.ui.RangeSlider 重置为初始值?

javascript - 从包含外部 javascript 文件中检索响应 header

java - 如何使用 Java 获取 JSON 中的 int 值?

Android缓存数据和更新策略?

iOS xcode、Web 服务、NSURLConnection 第二次调用失败

javascript - D3 动画(过渡)不适用于 Angular 应用程序

angularjs - 从 CDN 拉取 Angular 时,如何阻止 Angular 加载 .angular.min.js.map 文件?

c# - 仅当图像较新时如何从 HTTP 下载图像?

javascript - AngularJS:使用服务在 Controller 之间发送值不起作用