2014-09-23 106 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會尊重你的$資源網址。