我想找到总购买价格。 $ scope.salereports是我的json。它由products子数组组成。它包含字段brice,quantity。
我写这段代码
$scope.BuyingAmount=function(){
var buyamount = 0;
for(var i = 0; i<$scope.salereports.products.length; i++){
item=$scope.salereports.products[i]
buyamount+=(item.brice*item.qty)
}
console.log(buyamount)
return buyamount;
}
我得到了这样的错误。请告诉我如何删除它。
angular.js:12520 TypeError: Cannot read property 'products' of undefined
at Scope.$scope.BuyingAmount (EmpController.js:891)
at fn (eval at <anonymous> (angular.js:13365), <anonymous>:4:227)
at Object.expressionInputWatch [as get] (angular.js:14345)
at Scope.$digest (angular.js:15888)
at Scope.$apply (angular.js:16160)
at done (angular.js:10589)
at completeRequest (angular.js:10787)
at XMLHttpRequest.requestLoaded (angular.js:10728)
这是我的json结果:
Resource
$$hashKey:"object:15"
__v:0
_id:"5716fe9ef93044a01183dd29"
createdat:"2016-04-20T03:59:26.820Z"
customername:"Agarwal"
customerno:"989987987"
discamount:90
discount:20
grandtot:360
isDeleted:false
modifiedat:"2016-04-20T03:59:26.820Z"
ordernumber:"1112121"
products:Array[1]
0:Object
$$hashKey:"object:19"
_id:"5712257366dfa48c16d481d6"
bprice:100
created:"2016-04-20T03:59:26.822Z"
productname:"bata"
qty:3
size:7
sprice:150
__proto__:Object
length:1
__proto__:Array[0]
soldby:"admin"
答案 0 :(得分:3)
如果您还没有salereports
的值(例如,如果服务正在提取),并且该函数已在进行计算,该怎么办?所以你应该有类似的东西:
$scope.BuyingAmount = function() {
var buyamount = 0;
if ($scope.salereports !== undefined) {
for (var i = 0; i < $scope.salereports.products.length; i++) {
item = $scope.salereports.products[i]
buyamount += (item.brice * item.qty)
}
}
console.log(buyamount)
return buyamount;
}
您也可以在HTML中使用
<div ng-if="salereports !== undefined">
{{ BuyingAmount() }}
</div>
(假设你的“无价值”是undefined
(如果你之前没有设置过)。或者如果它是null
,那么你可以改用它。或者,只需使用{{1 }}
答案 1 :(得分:1)
最后我得到了答案
$scope.BuyingAmount=function(){
var buyamount = 0;
if ($scope.salereports !==undefined) {
for(var i = 0; i<$scope.salereports.length; i++){
for (var j=0;j<$scope.salereports[i].products.length;j++){
item=$scope.salereports[i].products[j]
buyamount=item.bprice*item.qty+buyamount;
}
}
}
console.log(buyamount)
return buyamount;
}
答案 2 :(得分:0)
试试这个
$scope.BuyingAmount=function(){
var buyamount = 0;
for(var i = 0; i<$scope.salereports.products.length; i++){
buyamount+=$scope.salereports.products[i].brice * $scope.salereports.products[i].quantity;
}
console.log(buyamount)
return buyamount;
}