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 回答