我有以下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问题。
这可能吗?如何?
答案 0 :(得分:3)
你能做的就是从工厂返回函数而不是promise / resource对象
managerApp.factory('parameterService',['$resource',
function($resource){
var findAll = function(){return $resource('rest/globalparam/list').query(); }
return {
findAll : findAll
};
}]
);