2014-09-23 76 views
1

我定义为这样一个自定义资源:AngularJS自定义资源URL被改写

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.$parkingSpaces({ id: spaceGroup.SpaceGroupId }, function (parkingSpaces) { 
       spaceGroup.parkingSpaces = parkingSpaces; 
      }); 

据查询我的RESTful服务as: /api/SpaceGroup/2

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

我对angularJS有点新,我知道我的路由在我的API控制器上工作,所以我只是想让这个服务正常工作。任何想法为什么这个被覆盖的URL不被调用?

回答

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会尊重你的$资源网址。