如何从ng-resource获取url(和params)?
如果不可能,我怎样才能创建包装器或扩展ng-resource以便我获得此功能?
更新:我希望能够从资源对象中提取URL和参数,而无需发送请求。
在理想的世界中,以下是有效的:
myResource = $resource('localhost/foo/bar');
myResource.getUrl() // returns localhost/foo/bar
由于getUrl函数不存在,我尝试了https://stackoverflow.com/a/28474289/4829972中找到的以下内容
包装厂:
angular.module('app').factory('ExtendedResourceFactory',['$resource',
function($resource) {
function ExtendedResourceFactory() {
var Resource = $resource.apply(this, arguments);
Resource.prototype.getArguments = function() {
return arguments
};
return Resource;
}
return ExtendedResourceFactory;
}
]);
我注入新工厂并试用:
res = ExtendedResourceFactory('url')
res.getArguments()
Uncaught TypeError: res.getArguments is not a function(…)
感谢指示或解决方案!!
答案 0 :(得分:0)
以下可能会有用。由于您明确控制了传递给$ resource的URL,我假设您可以转换响应以提供您想要的功能。它绝不是干净的,但确实看起来很实用。
var resource;
resource = $resource('/foo/bar',
{
id: 1
}, {
get: {
method: 'GET',
transformResponse: function(data) {
data = angular.fromJson(data);
data.getUrl = function() {
return '/foo/bar';
};
return data;
}
}
}
);
答案 1 :(得分:0)
看起来NgResource将所有内部变量和URL存储在自己的范围内,从而无法从外部访问它们。
您可以做的是使用您提供的其他信息扩展您的$resource
。使用此方法,您可以在您的资源旁边放置您的URL(或任何属性)。
myResource = angular.extend(
$resource('localhost/foo/bar'),
{
getUrl: function() { return 'localhost/foo/bar'; }
}
);
myResource.getUrl() // returns localhost/foo/bar