7

这里的文档说:

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。但这不起作用,查询仍然发送 url api/experiences。这真的支持还是我做错了什么?谢谢你的帮助。

4

2 回答 2

2

我的项目中有一个非常相似的问题。无法在资源操作中覆盖 url。我正在使用 Angular 1.2.0,它应该支持自 1.1.4 以来的功能。所以我检查了 Angular API 参考 CHANGELOG,但没有运气。然后我深入研究了源代码,发现不存在覆盖 url 的逻辑。这就是问题的根本原因。我将 Angular 更新到 1.2.0,但我忘记更新angular-resource.js到相应的版本。

所以,长话短说:检查 angular-resource.js 的版本

于 2014-11-25T08:28:33.150 回答
1

我不确定您是否可以访问identityurl 覆盖中的属性,但您可以尝试以下操作:

return $resource("api/experiences/:id", {}, {
    queryAll : {
        method  : 'GET',
        url     : 'api/companies/:id/experiences',
        params  : { id: identity.id },
        isArray : true
    }
});

id: identity.id告诉 Angular 使用 , 的 id 属性(identity如果存在)。

于 2013-11-27T11:37:58.693 回答