美元的资源;如何封装API方法

$resource; how to encapsulate API methods

本文关键字:封装 API 方法 何封装 资源 美元      更新时间:2023-09-26

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

这是可能的吗?

你可以做的是从工厂返回函数,而不是一个承诺/资源对象

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