我有代码来设置似乎无错误地编译的$资源:
var ReportsRest = $resource('/reports/:reportId', {reportId: '@id'});
ReportsRest.get({id: 123});
但是当该代码实际执行时生成的请求url如下所示:
GET http://localhost:5523/reports?id=123 404 (Not Found)
不会解析id并将其动态加载到URI中。有什么东西我不见了吗?
答案 0 :(得分:1)
试试这个:
var ReportsRest = $resource('/reports/:reportId', {reportId: '@id'});
ReportsRest.get({reportId: 123});
在$resource Usage下,有一个文本块。
paramDefaults
url参数的默认值。这些可以在动作方法中重写。如果任何参数值是一个函数,则每次需要获取请求的参数值时都会执行该函数(除非重写了参数)。
参数对象中的每个键值首先绑定到url模板(如果存在),然后在?之后将任何多余的键附加到url搜索查询。
给定模板/路径/:动词和参数{动词:'问候',称呼:' Hello'}导致URL /path/greet?sututation=Hello.
如果参数值以@为前缀,则该参数的值将从数据对象上的相应属性中提取(在调用操作方法时提供)。例如,如果defaultParam对象是{someParam:' @ someProp'}那么someParam的值将是data.someProp。
总而言之,您传入的对象需要使用paramDefaults
对象的键来获取值。该值将替换您的网址格式中相同的:key
文字。 paramDefaults
对象中以@
为前缀的任何值都将在返回的模型数据上设置为名为@
之后的属性。
var ReportsRest = $resource('/reports/:reportId', {reportId: '@id'});
ReportsRest.get({
reportId: 123,
other: 123
}, function(data) { /* ... */ });
这向/reports/123?other=123
发出请求。回调中的data
看起来像{ id: 123 }
。