0

我有一组JSON数据:AngularJS在JSON计数特定节点的数目数据集

"MyMessages": [ 
     { 
      "Code" : "N101", 
      "ID" : "History", 
      "Indicator" : "Down", 
      "PosChangeMessage" : "test test test test", 
      "NegReasonMessage" : "test test test test", 
      "Image" : "ImageType.Warning" 
     }, 

     { 
      "Code" : "A874", 
      "ID" : "History", 
      "Indicator" : "Up", 
      "NegReasonMessage" : "test test test test", 
      "Image" : "ImageType.Ok" 
     }, 

     { 
      "Code" : "X85", 
      "ID" : "Age", 
      "Indicator" : "Down", 
      "PosChangeMessage" : "test test test test", 
      "Image" : "ImageType.Warning" 
     }, 

     { 
      "Code" : "Z846", 
      "ID" : "Products", 
      "Indicator" : "Up", 
      "PosChangeMessage" : "test test test test", 
      "Image" : "ImageType.Ok" 
     }, 
    ], 

我可以显示有多少项目有通过{{ MyMessages.length }}

但是我想知道的是在MyMessages有多少个PosChangeMessage和多少个NegChangeMessage项目。

所以,在上面的例子:

PosChangeMes​​sage = 3

NegChangeMes​​sage = 2

+3

有没有语法糖来帮助你在这里。所以你必须以某种方式或其他方式来计算值。例如。 (过滤器,控制器方法,$ watch) – Yoshi

回答

2

请在这里看到:http://jsbin.com/yaxiya/1/

angular.forEach(MyMessages, function(message){ 

     if(message.PosChangeMessage){ 
     $scope.PosChangeMessage++; 
     } 
     if(message.NegReasonMessage) 
     { 
     $scope.NegChangeMessage++; 
     } 


     }); 
1

创建其中遍历所述控制器的方法“MyMessages”的长度并计算出相应的值,就像在你的控制器中一样..

for(var i=0;i<MyMessages.length;i++){ 
    if(MyMessages[i].PosChangeMessage!=null){ 
    $scope.posChangeMessageLength++; 
    } 
    if(MyMessages[i].NegReasonMessage!=null){ 
    $scope.negReasonMessageLength++; 
    } 

}