2016-11-01 44 views
0

我在AngularJS的應用程序中使用MEAN堆棧作爲我的前端。如果total sum列值,如果表中某些行值不可用,實際上我得到了total sum value,但總計行值不可用〜總計顯示如NaN ... My Plunker例如: - 在表中所有行值可用手段amt值總和的答案我有5775.30,然後在表中,如果某一行的值是不可用的手段amount payment值總和顯示像NaN,期待答案像200,如果有任何人知道感謝解決方案幫助我們...如何總結列值如果某些行值在Angularjs中不可用?

  • 在表格列中,所有值都可用,我們也得到確切答案和總和。

  • 但在表中,amount payment單行值不是有效手段總和值是顯示像NaN ...所以重量,我們預計,如果某一行的值是不可用的總和應該是計算的休息值...期待amount payment答案像200 ......請看my plunker

我的控制器: -

.filter('sumOfValue', function() { 
    return function (data, key) { 
     debugger; 
     if (angular.isUndefined(data) && angular.isUndefined(key)) 
      return 0;   
     var sum = 0; 

     angular.forEach(data,function(v,k){ 
      sum = sum + parseFloat(v[key]); 
     });   
     return sum.toFixed(2); 
    } 
}) 

我的HTML: -

<td >{{mani.amt}}</td> 

    <td >{{mani.amount_payment }}</td> 

我的數據: -

 { 
    "_id": "5816f4fad0be79f809519f98", 
    "user": { 
    "_id": "57400c32bd07906c1308e2cf", 
    "displayName": "mani selvam" 
    }, 
    "__v": 0, 
    "created": "2016-10-31T07:38:34.999Z", 
    "remarks": "-", 
    "status": "pending", 
    "amt": "1925.10", 
    "cheque_currency": "Rs", 
    "cheque_value": "300", 
    "amount_payment": "1,925.10", 
    "debitnote_no_payment": "3", 
    "supplier_name": "karikalan", 
    "buyer_name": "Manidesigns" 
    }, 

    { 
    "_id": "5816f4fad0be79f809519f98", 
    "user": { 
    "_id": "57400c32bd07906c1308e2cf", 
    "displayName": "mani selvam" 
    }, 
    "__v": 0, 
    "created": "2016-10-31T07:38:34.999Z", 
    "remarks": "-", 
    "status": "pending", 
    "amt": "1925.10", 
    "cheque_currency": "Rs", 
    "cheque_value": "300", 
    "amount_payment": "1,925.10", 
    "debitnote_no_payment": "3", 
    "supplier_name": "karikalan", 
    "buyer_name": "Manidesigns" 
    }, 

    { 
"_id": "5816f4fad0be79f809519f98", 
"user": { 
"_id": "57400c32bd07906c1308e2cf", 
"displayName": "mani selvam" 
}, 
"__v": 0, 
"created": "2016-10-31T07:38:34.999Z", 
"remarks": "-", 
"status": "pending", 
"amt": "1925.10", 
"cheque_currency": "Rs", 
"cheque_value": "300", 
"amount_payment": "", 
"debitnote_no_payment": "3", 
"supplier_name": "karikalan", 
"buyer_name": "Manidesigns" 
}, 

我創建Plunker供參考: - Plunker

回答

0

改變你的一些代碼:檢查的JavaScript的功能isNAN

angular.forEach(數據,功能(V,K){

var keyval; 
    if(isNaN(parseFloat(v[key]))) 
    keyval=0; 
    else 
    keyval=parseFloat(v[key]); 
    sum = sum + keyval; 
}); 
+0

哎@ Simanchal感謝您的寶貴回答,可以請你在plunker更新上面給出的答案也知道解決方案,謝謝 –

+0

HTTP:// plnkr。 CO /編輯/ MaVll268qyx1AIrMP8vI?p =預覽 –

+0

現在檢查plunkr –

0

的方法parseFloat()將如果返回的NaN值不是有效的數字。所以你得到的結果是NaN。跳過所有無效值。下面的例子。希望這可以幫助。

angular.forEach(data, function(v,k){ 
      var value = parseFloat(v[key]); 
      if(isNaN(value)) { 
      return; 
      } 
      sum = sum + value; 
     }); 
+0

嘿感謝您的寶貴答案,可以請您在plunker更新上面給出的答案也知道解決方案,謝謝 –