我有以下angularjs服务,该服务公开了一些执行REST请求的方法。
managerApp.factory('parameterService',
function($resource){
return {
findAll: $resource('rest/globalparam/list'),
getByName: $resource('rest/globalparam/getByName/?name=:name'),
update: $resource('rest/globalparam')
};
}
);
用法如下:
$scope.parameters = parameterService.findAll.query();
$scope.selectedParameter = parameterService.getByName.get({name: $routeParams.id});
尽管这很好,但是我对语法和我需要了解控制器中的$ resource API(query(),get())的事实都不满意。我想在控制器中看到的是:
$scope.parameters = parameterService.findAll();
$scope.selectedParameter = parameterService.getByName($routeParams.id);
这也将使单元测试(模拟服务)更加容易。
这可能是JavaScript而非AngularJS问题。
这有可能吗?
最佳答案
您可以做的不同的是从工厂返回函数,而不是promise / resource对象
managerApp.factory('parameterService',['$resource',
function($resource){
var findAll = function(){return $resource('rest/globalparam/list').query(); }
return {
findAll : findAll
};
}]
);