我有一个使用 $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/