角抽象工厂

时间:2018-03-07 23:02:22

标签: angularjs service factory

我有以下服务定义。它看起来像我要为我要公开的每个实体重复这个代码,这非常难看。我对Javascript并不奇妙,所以我无法找到一种方法来创建一个模板服务生成工厂,我可以提供名称DeltaRunAuditService,然后将其小写并删除' Service&#39 ;提供网址?任何想法

谢谢, 标记,

app.service('DeltaRunAuditService', ['$http', function ($http) {

    function getDeltaRunAudits(pageNumber, size) {
        pageNumber = pageNumber > 0 ? pageNumber - 1 : 0;
        return $http({
            method: 'GET',
            url: 'api/deltarunaudit?page=' + pageNumber + '&size=' + size
        });
    }

    return {
        getDeltaRunAudits: getDeltaRunAudits
    };

}]);

1 个答案:

答案 0 :(得分:0)

    ['DeltaRunAudit', 'User'].forEach(function(entity){
          var serviceName = entity + 'Service';
          var url = entity.toLowerCase();
          app.service(serviceName, ['$http', function ($http) {

            function get(pageNumber, size) {
                pageNumber = pageNumber > 0 ? pageNumber - 1 : 0;
                return $http({
                    method: 'GET',
                    url: 'api/' + url + '?page=' + pageNumber + '&size=' + size
                });
            }

            return {
                get: get
            };

          }]);
    })

如果您确实要为所有实体创建服务,因为您的服务名称类似于'getDeltaRunAuditsService',您可以在方法中使用'get''getAll'命名