AngularJS自定义资源URL被覆盖

时间:2014-09-23 19:30:12

标签: angularjs angularjs-resource

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

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上运行时,它正在点击正确的服务网址: / API /空间群

但是当我这样做时:

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

它正在质疑我的宁静服务: / api / SpaceGroup / 2

代替: / API /空间群/ 2 / ParkingSpaces

我对angularJS有些新意,我知道我的路由适用于我的API控制器,所以我只是想让这项服务正常运行。有没有想过为什么不会调用这个覆盖的URL?

1 个答案:

答案 0 :(得分:0)

我会这样写你的服务:

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。