0

所以我有一个像这样的 $resource 工厂:

(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?我想我的菜鸟问题是如何'@id'在使用我的资源工厂时传入参数('@id'实际上是如何工作的)?

4

1 回答 1

1

最好匹配 paramDefault 键/值,因为最近在angularjs $resource 中描述的原因没有替换 POST 的 url 模板中的变量

那么,如果你的 $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 });

演示

于 2014-06-03T23:34:46.037 回答