Я хочу найти общую цену покупки. $ scope.salereports - мой json. он состоит из продуктов sub array.it содержит поля brice, количество.
Я пишу этот код
$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"
наконец, я получил ответ
$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;
}
Что делать, если у вас еще нет значений для salereports
(скажем, если он 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>
(если ваше значение "no value" не undefined
(если вы никогда не устанавливали его раньше), или если оно равно null
, вы можете просто использовать его вместо этого. Или просто используйте if ($scope.salereports) {... }
if ($scope.salereports !== undefined)
Попробуй это
$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;
}
$scope.salereports.products
содержит значение (массив)!