我有一个定义的自定义资源:
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?
答案 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。