8

我有一个为我的 Article 模型返回 $resource 的工厂:

angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) {
    return $resource('/api/v1/article/:articleId', {
        articleId: '@_id',
        _shop: window.user._shop
    }, {
        update: {
            method: 'PUT'
        }
    });
}]);

GETPOST并且DELETE运行良好,但不是更新 (PUT)。这是我使用的代码:

Articles.update({articleId: '300000000000000000000001'}, function(article){
    console.log(article);
});

它提出了这个要求:

PUT http://localhost:3000/api/v1/article?_shop=100000000000000000000001

代替:

PUT http://localhost:3000/api/v1/article/300000000000000000000001?_shop=100000000000000000000001

知道为什么在进行更新时没有填充 :articleId 参数吗?谢谢!

4

2 回答 2

8

正如 Fals 在评论中提到的,articleId 参数在请求内容中。所以我做了一个小技巧,让它也出现在 URI 上。

angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) {
    return $resource('/api/v1/article/:articleId', {
        articleId: '@_id',
        _shop: window.user._shop
    }, {
        update: {
            method: 'PUT',
            params: {
                articleId: "@articleId"
            }
        }
    });
}]);
于 2013-11-25T23:55:59.513 回答
1

我有同样的问题,这里的问题是以下行:

articleId: '@_id',

该行应该是:

articleId: '@articleId',

articleId 不需要再次定义。

于 2015-05-21T00:47:34.967 回答