我有一个包含行和列的网格。 我还有一个额外的列来跟踪总数。 我有类似的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)之和。 请帮忙!感谢
答案 0 :(得分: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]
});