0

行と列を持つグリッドがあります。合計を追跡する追加の列もあります。次のような JSON データがあります。

{
    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) の合計。助けてください!ありがとう

4

1 に答える 1

1

データを現在の方法で整理するのは困難です。あなたがやろうとしていることは、サーバー側で行うのがはるかに簡単です。

各Sonのコストを合計するようにデータを再編成する場合、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]
    });
于 2012-11-29T02:16:37.680 に答える