我有以下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
        };
    }]
);

10-06 07:34
查看更多