我试图从控制器中的对象数组获得成本和。我从mongo collection
获得了这个数组vm.costs = CostsService.query();
然后调用函数来计算成本总和
vm.sum = function (items, prop) {
console.log(items);
return items.reduce(function (a, b) {
return a + b[prop];
}, 0);
};
vm.costTotal = vm.sum(vm.costs, 'costprice');
我不知道为什么我得到0值而不是真正的成本总和。 我在Chrome浏览器中检查了控制台中的项目,但列表以正确的方式显示。
有一件有趣的事情,如果我在控制器硬编码数组中添加然后调用sum函数,一切看起来都不错。我认为这个问题来自mongo,但是我没有任何想法如何获得这笔费用。
我的CostService方法如下:
// Costs service used to communicate Costs REST endpoints
(function () {
'use strict';
angular
.module('costs')
.factory('CostsService', CostsService);
CostsService.$inject = ['$resource'];
function CostsService($resource) {
return $resource('api/costs/:costId', {
costId: '@_id'
}, {
update: {
method: 'PUT'
}
});
}
}());
答案 0 :(得分:0)
这可能是因为您的CostsService
可能会直接撤回Promise
解析costs
而不是costs
数组。要解决这个问题,您需要调用承诺中的vm.sum
.then
返回服务调用。像这样:
vm.sum = function(items, prop) {
console.log(items);
return items.reduce(function(a, b) {
return a + b[prop];
}, 0);
};
CostsService.query().$promise.then(function(costs) {
vm.costs = costs;
vm.costTotal = vm.sum(costs, 'costprice');
});