如何修改ngResource提取的数据然后返回?

时间:2016-05-07 17:35:19

标签: angularjs angular-resource

我想在角度服务中修改(过滤)一个数组(由ngResource获得的数据),然后将修改后的数据传递给控制器​​,但由于它的异步行为,我陷入了困境。

以下是代码:

(function() {
'use strict';

angular.module('app').factory('Report', ['Employee', function(Employee) {

    var getReports = function(employeeId) {

        return Employee.query({}, function(employees) {
            return employees.filter(function(element) {
                return employeeId === element.managerId;
            });
        });

    };

    return {
        query: function(employee) {
            return getReports(parseInt(employee.employeeId));
        }
    };

  }]);
}());

我在控制器中调用它:

$scope.employees = Report.query({employeeId: $routeParams.employeeId});

上面的代码有两个问题:

  1. 它不起作用:) getReports()返回整个employees数组,而不进行过滤,
  2. 它似乎不是优雅或可维护的设计。在这方面我可以改进什么?

1 个答案:

答案 0 :(得分:1)

如果在过滤器上需要不同类型,则可以将过滤器函数作为参数传递:

return {
    query: function(employee, filterFunction) {
        return getReports(parseInt(employee.employeeId)).filter(filterFunction);
    }
};


Report.query({employeeId: $routeParams.employeeId}, function (value) {
    // extra filtering...   
});