2012-11-28 94 views
0

我有一個帶有行和列的網格。 我也有一個追蹤總數的附加列。 我有一個類似的JSON數據:用陣列動態數組計算Knockout

{ 
    GreatGrandfather: { 
     GrandFather: { 
      Father: [ 
       { 
        Son: [ 
         { 
          Name: "A", 
          Cost: "100" 
         }, 
         { 
          Name: "B", 
          Cost: "1", 
         }, 
         { 
          Name: "C", 
          Cost: "50", 
         } 
        ] 
       }, 
       { 
        [ 
         Son: { 
          { 
          Name: "A", 
          Cost: "44"  
         }, 
         { 
          Name: "B", 
          Cost: "13", 
         }, 
         { 
          Name: "C", 
          Cost: "22", 
         } 
        ] 
       } 
      ] 
     } 
    } 
} 

我,我可以有父親和兒子的動態數量。 我的問題是我如何顯示名字的兒子的金額? 因此,對於這個例子,我會有3個總數。 A(144),B(14)和C(72)的和。 請幫忙!謝謝

+0

你能告訴我們一下表結構的外觀嗎?是偉大的祖父和祖父列?我無法想象這一點。 – Tyrsius

回答

1

以你擁有它的方式組織你的數據,很難做到。你要求做的事情更容易做服務器端。

如果您重新組織數據,以便爲每個兒子計算總和成本,那是可行的,因爲您可以使用for循環來完成此操作。我在http://jsfiddle.net/photo_tom/p6dW6/15/有一個工作演示。

我將以下ko.computed添加到每個Son數組對象。

var sons = vm.GreatGrandfather.GrandFather.Father(); 
var i = sons.length; 
for (var i1 = 0; i1 < i; i1++) { 
    sons[i1].sum = ko.computed({ 
     read: function() { 
      var sonsArray = this.Son(); 
      var sonsLen = sonsArray.length; 
      var sum = 0; 
      for (var i2 = 0; i2 < sonsLen; i2++) { 
       var costValue = sonsArray[i2].Cost(); 
       sum += Number(costValue) ; 
      } 
      return sum; 
     }, 
     owner: sons[i1] 
    });