【问题标题】:AngularJS Custom Resource URL being overwrittenAngularJS 自定义资源 URL 被覆盖
【发布时间】:2014-12-18 14:06:10
【问题描述】:

我有一个这样定义的自定义资源:

app.factory('SpaceGroupService', ['$resource', function ($resource) {
return $resource('api/SpaceGroup/:id', { id: '@id'},
{
    'parkingSpaces': { method: 'GET', url: 'api/SpaceGroup/:id/ParkingSpaces', isArray: true }
});
}]);

这个想法是传入我的空间组对象的 ID 以返回该组中的所有停车位。当我打电话时

SpaceGroupService.query()

在我的本地 iisexpress 上运行时,它访问了正确的服务 url: /api/SpaceGroup

但是当我这样做时:

spaceGroup.$parkingSpaces({ id: spaceGroup.SpaceGroupId }, function (parkingSpaces) {
                spaceGroup.parkingSpaces = parkingSpaces;
            });

它正在查询我的宁静服务: /api/SpaceGroup/2

而不是: /api/SpaceGroup/2/ParkingSpaces

我对 angularJS 有点陌生,我知道我的路由可以在我的 API 控制器上运行,所以我只是想让这项服务正常工作。知道为什么不调用此覆盖的 URL 吗?

【问题讨论】:

    标签: angularjs angularjs-resource


    【解决方案1】:

    我会这样写你的服务:

    app.factory('SpaceGroupService', ['$resource', function ($resource) {
    return 
    {
        ParkingSpaces: $resource('api/SpaceGroup/:id/ParkingSpaces', {},
        {
            query: { method: 'GET', params: { id: '@id'}, isArray: true }
        }
    }
    }]);
    

    然后改为这样称呼它:

      SpaceGroupService.ParkingSpaces.query({ id: someId });
    

    您可以通过这种方式在服务中设置多个资源 - 您也可以定义多个方法(GET、POST、PUT、DELETE)。这也意味着 Angular 会尊重你的 $resource url。

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 2014-11-09
      • 1970-01-01
      • 2013-10-07
      相关资源
      最近更新 更多