如何修改ngResource获取的数据然后return呢?
How to modify data fetched by ngResource and then return it?
我想修改(过滤)angular 服务中的数组(我通过 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});
上面的代码有两个问题:
- 它不起作用 :) getReports() returns 整个员工数组,没有过滤,
- 它看起来不像是优雅或可维护的设计。在这方面我可以改进什么?
如果您需要不同类型的过滤器,您可以将过滤器函数作为参数传递:
return {
query: function(employee, filterFunction) {
return getReports(parseInt(employee.employeeId)).filter(filterFunction);
}
};
Report.query({employeeId: $routeParams.employeeId}, function (value) {
// extra filtering...
});
我想修改(过滤)angular 服务中的数组(我通过 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});
上面的代码有两个问题:
- 它不起作用 :) getReports() returns 整个员工数组,没有过滤,
- 它看起来不像是优雅或可维护的设计。在这方面我可以改进什么?
如果您需要不同类型的过滤器,您可以将过滤器函数作为参数传递:
return {
query: function(employee, filterFunction) {
return getReports(parseInt(employee.employeeId)).filter(filterFunction);
}
};
Report.query({employeeId: $routeParams.employeeId}, function (value) {
// extra filtering...
});