我试图理解如何修改$resource.query()
返回的数据 - 结果证明 - 不是真正的 Promise ,$q
而是在异步调用完成时要填充的空对象/数组。
我定义了一个服务,我想修改来自的数据$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);
但它返回对象而不是数组。