简短问题:是否可以将$ resource中的数据存储在服务中,以便查询一次并在不同的控制器中使用它?
我尝试query().$promise.then
,但资源仍然返回空引用。在服务中解析和存储$ resource数据的正确语法是什么,以便后续调用可以使用它?
factory('DataService', function($resource) {
var resource = $resource("/api/data", {}, {
query: { isArray: false }
});
var data;
return {
get: function (args) {
if (!data) {
resource.query().$promise.then(
function(result) {
data = result.message;
return data;
}
);
}
return data;
}
};
答案 0 :(得分:0)
是否可以将$ resource中的数据存储在服务中,以便查询一次并在不同的控制器中使用它?
是的,但是我已经存储了承诺,因此您获得了一致的API。例如
.factory('DataService', function($resource) {
// $resource definition here
var promise;
return {
get: function() {
if (!promise) {
promise = resource.query().$promise.then(function(result) {
return result.message;
});
}
return promise;
}
};
})
然后其他一切都可以使用
DataService.get().then(function(message) {
// do stuff with message
})
,它只会被检索一次。
您可以根据需要多次在原始承诺中创建新的承诺链(使用then
),并始终使用相同的原始result.message
值解析