Javascript 如何从ng资源获取url?
如何从ng资源获取url(和参数) 如果这是不可能的,我如何才能创建一个包装器或扩展ng资源,以便获得此功能 更新:我希望能够从资源对象中提取URL和参数,而无需发送请求 在理想的世界中,以下各项起作用:Javascript 如何从ng资源获取url?,javascript,angularjs,Javascript,Angularjs,如何从ng资源获取url(和参数) 如果这是不可能的,我如何才能创建一个包装器或扩展ng资源,以便获得此功能 更新:我希望能够从资源对象中提取URL和参数,而无需发送请求 在理想的世界中,以下各项起作用: myResource = $resource('localhost/foo/bar'); myResource.getUrl() // returns localhost/foo/bar 由于getUrl函数不存在,我尝试了在 包装厂: angular.module('app').fact
myResource = $resource('localhost/foo/bar');
myResource.getUrl() // returns localhost/foo/bar
由于getUrl函数不存在,我尝试了在
包装厂:
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(…)
感谢您的指导或解决方案 以下内容可能有用。由于您可以显式控制传递到$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;
}
}
}
);
看起来NgResource将所有内部变量和URL存储在自己的范围内,因此无法从外部访问它们 您可以做的是使用您提供的附加信息扩展
$resource
。使用此方法,您可以将URL(或任何属性)与资源放在一起
myResource = angular.extend(
$resource('localhost/foo/bar'),
{
getUrl: function() { return 'localhost/foo/bar'; }
}
);
myResource.getUrl() // returns localhost/foo/bar
非常感谢。使用此解决方案,我必须调用get方法才能公开getUrl函数。这个问题可能还不够清楚。我想要实现的是一种从资源元素中提取URL和参数的方法,而不必触及端点。我也需要这种方法进行单元测试。我想做:
$httpBackend.expectGET(MyResource.getUrl()).response(200,fixture.get)