【问题标题】:Knockout computed with dynamic arrays of arrays用数组的动态数组计算淘汰赛
【发布时间】:2012-11-29 10:16:37
【问题描述】:

我有一个包含行和列的网格。 我还有一个额外的列来跟踪总数。 我有一个类似这样的 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) 的总和。 请帮忙!谢谢

【问题讨论】:

  • 你能告诉我们表结构是什么样的吗?曾祖父和祖父是柱子吗?我很难想象这个。

标签: json knockout.js


【解决方案1】:

以您拥有的方式组织数据是很难做到的。您要求做的事情在服务器端要容易得多。

如果您重新组织数据以便对每个 Son 的成本求和,这是可行的,因为您可以使用 for 循环来完成。我在http://jsfiddle.net/photo_tom/p6dW6/15/ 有一个工作演示。

我在每个 Son 数组对象中添加了以下 ko.computed。

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]
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 2017-09-19
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    相关资源
    最近更新 更多