角度资源覆盖网址无法正常工作

时间:2013-09-16 09:54:58

标签: angularjs resources

文档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。这是真的支持还是我做错了什么?谢谢你的帮助。

2 个答案:

答案 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属性(如果存在)。