2016-04-20 22 views
0

私は合計購入価格を探したいと思います。 $ scope.salereportsは私のjsonです。それは製品sub配列に含まれています。プロパティ 'length'が未定義ですか?計算中合計

私は、私はこのようなエラーを得た

$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

'$ scope.salereports.products'に値(配列)が含まれていることを確認してください! –

+0

あなたのjsonの結果は何ですか? –

+1

エラーは 'salereports'が未定義であることを明確に示しています。デバッグし、それがなぜ定義されていないのか理解する。提供されたコードではこれを行うことはできません –

答えて

0

使用し、代わりにそれを使用しています。またはすることができ、nullある

$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; 
} 
+0

それは同じですか...私の答えに似ていますか?もしそうなら、あなたは私の答えをアップヴォートし、あるいは答えとしてそれを受け入れることになっています...それはStackOverflowの全ポイントです。おそらく最終的な方法は入れ子の2つのレベルを持つことですが、私の答えは少なくとも問題が何であるかを指しています –

0

はそれがによってフェッチされている場合、あなたはまだ、と言う(salereportsの値がない場合はどうすればこの

$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; 
} 
2

をお試しくださいサービス)、関数はすでに計算を行っています。 )以前に設定したことがない場合

<div ng-if="salereports !== undefined"> 
    {{ BuyingAmount() }} 
</div> 

は(あなたの「無価値」を想定していない

$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で使用することができますが、(undefinedですそれとも場合:だからあなたのようなものを持っている必要があります。その後、あなただけのただ最終的に私は答えを得たif ($scope.salereports) { ... }

+0

if($ scope.salereports.products.length!== undefined){//コードが書かれていない//} – SrinivasAppQube

+0

'if($ scope.salereports!== undefined)' –

+0

あなたの提案をありがとうi答えを得た。 – SrinivasAppQube