$资源;如何封装API方法

时间:2014-08-11 11:10:37

标签: javascript angularjs angularjs-resource

我有以下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问题。

这可能吗?如何?

1 个答案:

答案 0 :(得分:3)

你能做的就是从工厂返回函数而不是promise / resource对象

managerApp.factory('parameterService',['$resource',
    function($resource){
    var findAll = function(){return $resource('rest/globalparam/list').query(); }        
    return {
            findAll : findAll
        };
    }]
);