有没有办法让$ resource动作之一(例如isArray或cache)动态化?
HTML
terminalsResource.findTerminals({cached: true}, function (data) {
$scope.terminals = data;
}, function (response) {
JS
//Where to add dynamic properties?
return $resource("rest/terminals", {useCache:'@cached'}, {
/**
* @method findTerminals
* Find all terminals
* @return {Array} Terminals
*/
findTerminals: { method: "GET", isArray: true, cache: useCache}
});
上面的代码不起作用,但它塑造了我不想做的图像
答案 0 :(得分:1)
专门用于缓存:我会说您的代码应该正常工作,因为cache
是您的GET操作支持的属性。它期望使用$cacheFactory
构建布尔或缓存实例。
http://docs.angularjs.org/api/ngResource.$resource
缓存 - {boolean | Cache} - 如果为true,将使用默认的$ http缓存来缓存GET请求,否则如果使用$ cacheFactory构建缓存实例,则将使用此缓存用于缓存。
我唯一可以想到你的代码无效的原因是,在适当的时候没有取出给定的boolean via {useCache:'@cached'}
以用于action.cache。
这种方式肯定会在您调用特定服务工厂函数时构建$resource
时起作用。 不测试了这个,但应该表明这个想法。
.factory('Terminal', function($resource){
var Terminal = {};
Terminal.findTerminals = function(params, useCache) {
return $resource("rest/terminals", params, {
/**
* @method findTerminals
* Find all terminals
* @return {Array} Terminals
*/
findTerminals: { method: "GET", isArray: true, cache: useCache}
});
}
return Terminal;
});
然后:
Terminal.findTerminals({}, true, function (data) {
$scope.terminals = data;
}, function (response) {