查看 angular-resource 源表明以当前编写的方式无法触发缓存。
这是来自源的请求对象:
$http({
method: action.method,
url: route.url(extend({}, extractParams(data), action.params || {}, params)),
data: data
}).then(...)
有几种可能的方法来处理这个问题。
首先,您可以使用客户端持久性在本地缓存。我将amplify.store 与包装器一起使用(b/c 我不太喜欢 API 语法)。根据您要查找的内容以及您的目标浏览器,还有多种其他存储解决方案。也有不少人使用lawnchair。
然后,您可以在本地对模型进行字符串化和存储,并根据您想要的任何规则或时间限制对其进行更新。
另一种解决方案是简单地修改角度资源以接受您正在寻找的参数。这可以很简单(只需向 $resource 添加一个额外的参数),也可以很复杂。
例如
function ResourceFactory(url, paramDefaults, actions, cache) {
...
var cache = cache != null ? cache : false; // Set default to false
$http({
method: action.method,
url: route.url(extend({}, extractParams(data), action.params || {}, params)),
data: data,
cache: cache
}).then(...)
}
最后,根据您的要求,使用 angular.factory 创建服务可能更容易创建自己的资源。 ngResource 的优点之一是在转换参数时所有的字符串插值都为您工作。但是,如果需要,您当然可以使用此逻辑进行解析,或者根据您使用的模型编写自己的逻辑。