如何为这个$ resource工厂使用restful而不是查询语法?

时间:2014-06-03 23:08:42

标签: javascript angularjs ngresource

所以我有一个像这样的资源工厂:

(function() {
    'use strict';
    app.factory('WidgetFactory', [ '$resource', function($resource) {
        return $resource('http://localhost:8282/widget/:widgetId', { widgetId : '@id'},{
                rate: {method:'POST', params:{applyRating:true}}
            });
    }]);
}());

然后在我的控制器中,我想获得id为1的小部件:

this._widgets = WidgetFactory.get({ id:1 }); // or WidgetFactory.query({ id:1 })

但我当时的请求是http://localhost:8282/widget?id=1而不是widget/1

如何从控制器制定请求$ resource以生成widget/1?我想我的noob问题是在使用我的资源工厂时如何传入'@id'参数('@id'如何真正起作用?)

1 个答案:

答案 0 :(得分:1)

最好匹配paramDefault键/值,原因是最近在angularjs $resource not replacing variable in url template for POST中描述的原因

那么,如果您的$ resource配置看起来像

app.factory('WidgetFactory', [ '$resource', function($resource) {
    return $resource('http://localhost:8282/widget/:widgetId', { widgetId : '@widgetId'},{
            rate: {method:'POST', params:{applyRating:true}}
        });
}]);

您的控制器调用看起来像

this._widgets = WidgetFactory.get({ widgetId:1 });

Demo