Angularjs-数组中控制器中的对象值总和
我试图从控制器中的对象数组中获取成本和。我从mongo收藏中得到了这个阵列Angularjs-数组中控制器中的对象值总和,angularjs,mongodb,function,controller,sum,Angularjs,Mongodb,Function,Controller,Sum,我试图从控制器中的对象数组中获取成本和。我从mongo收藏中得到了这个阵列 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.co
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的数组中,但我不知道如何得到这个成本总额
我的服务方法如下:
//用于与REST端点通信的成本服务
(功能(){
"严格使用",;
有棱角的
.模块(“成本”)
.工厂(“成本服务”,成本服务);
CostsService.$inject=['$resource'];
功能成本服务($resource){
返回$resource('api/costs/:costId'{
costId:“@_id”
}, {
更新:{
方法:“放”
}
});
}
}());
这可能是因为您的成本服务
可能会重新执行承诺
解决成本
而不是直接使用成本
数组。要解决这个问题,您需要调用内的vm.sum
。然后调用承诺返回服务调用的
。像这样:
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');
});
是的,您有权返回承诺,但当我尝试使用.then(function(costs){…})执行此操作时,我出现了一个错误。then不是一个函数。@BogusławBoczkowski您也可以共享您的服务代码吗?我想这是因为你得到了这个error@BogusławBoczkowski现在检查一下。对于
$resource
,我们需要添加$promise
,就像我在答案中更新的那样。另外,删除你的服务作为答案,你可以编辑你的问题并把它放在那里