文档here说:
url – {string} – action specific url override.
The url templating is supported just like for the resource-level urls.
我想用这个好的功能,我试过这个:
angular.module("experience", ['ngResource'])
.factory('Experience', function ($resource, identity) {
return $resource("api/experiences/:id", {}, {
queryAll : {
method : 'GET',
url : 'api/companies/' + identity.id + '/experiences',
isArray : true
}
});
});
您看到我正在尝试覆盖queryAll方法的网址。但这不起作用,查询仍然发送url api / experience。这是真的支持还是我做错了什么?谢谢你的帮助。
答案 0 :(得分:2)
我的项目中有一个非常类似的问题。在资源操作中不能覆盖该URL。我使用的是Angular 1.2.0,它应该支持自1.1.4以来的功能。所以我检查了Angular API参考,CHANGELOG,但没有运气。然后我挖掘了源代码并注意到覆盖url的逻辑并不存在。这是问题的根本原因。我将Angular更新为1.2.0,但我忘了将angular-resource.js
更新为相应的版本。
所以,长话短说:检查angular-resource.js的版本
答案 1 :(得分:1)
我不确定您是否可以在网址覆盖中访问identity
的属性,但您可以尝试这样的内容:
return $resource("api/experiences/:id", {}, {
queryAll : {
method : 'GET',
url : 'api/companies/:id/experiences',
params : { id: identity.id },
isArray : true
}
});
id: identity.id
告诉angular使用identity
的id属性(如果存在)。