试图弄清楚为不同的呼叫创建通用的$ resource驱动的数据服务或多种服务是否更好。
例如:
我有api / user /:userId / events /:eventId并说,api / user /:userId / beers /:beerId
变体(A):
function UserDataService( $resource, API_URL ) {
return function (whichResource){
return $resource( API_URL + whichResource, {userId: '@_userId'} );
}
}
UserMainController( UserDataService, RESOURCE ) {
var UserMainCtrl = this;
UserMainCtrl.events = UserDataService( RESOURCE.USERS.EVENT.LIST ).get({userId:1});
UserMainCtrl.beers = UserDataService( RESOURCE.USERS.BEER.LIST ).get({userId:1});
}
变体(B):
function UserEventService( $resource, API_URL, RESOURCE ) {
return $resource( API_URL + RESOURCE.USERS.EVENT.LIST, {userId: '@_userId'} );
}
function UserBeerService( $resource, API_URL, RESOURCE ) {
return $resource( API_URL + RESOURCE.USERS.EVENT.LIST, {userId: '@_userId'} );
}
UserMainController( UserService, UserBeerService) {
var UserMainCtrl = this;
UserMainCtrl.events = UserEventService.get({userId:1});
UserMainCtrl.beers = UserBeerService.get({userId:1});
}
哪个更好,为什么?或者完全不同的东西?
我见过的例子只是一维的,例如电影,但不是用户加电影和音乐。
谢谢!
答案 0 :(得分:2)
你应该确保使用方法B.甚至可以更好地为每个$资源分隔文件。例如,对于与资源和路由器相关联的每个模块,您可以使用此文件夹结构。
Js/
components/
beers/
beers-resource.js
beers-controller.js
beers-router.js
wines/
wines-resource.js
wines-controller.js
wines-router.js
如果您问我这是最好的方法,因为从长远来看,您的代码将更容易阅读和维护。