【发布时间】:2016-09-03 18:10:44
【问题描述】:
我试图理解如何修改 $resource.query() 返回的数据 - 结果证明 - 不是来自 $q 的真正 Promise,而是在异步调用完成时要填充的空对象/数组。
我定义了一项服务,我想在其中修改来自$resource 的数据(准确地过滤它),但实际上没有过滤任何内容。我得到了整个数组。
我确定我在这里遗漏了一些琐碎的事情。提前感谢您的帮助。
这里是服务(员工是$resource):
factory('Report', ['Employee',
function(Employee) {
var query = function(id, cb) {
return Employee.query({}, function(data) {
return cb(data, id);
});
};
var findByManager = function(employees, employeeId) {
return employees.filter(function(element) {
console.log(element);
return employeeId === element.managerId;
});
};
return {
query: function(employee) {
return query(employee.employeeId, findByManager);
}
};
}
]);
编辑
根据 ippi 的建议,我还尝试访问底层承诺:
var query = function(id) {
return Employee.query().$promise
.then(function(data) {
return findByManager(data, id);
});
};
return {
query: query,
}
在控制器中:
$scope.employees = Report.query(id);
但它返回的是对象而不是数组。
【问题讨论】:
标签: angularjs angular-resource ngresource angularjs-ng-resource