我有一个可观察的数组
var myArray = ko.observableArray([
{ name: "Jimmy", type: "Friend", Age: 30 },
{ name: "George", type: "Friend", Age: 40 },
{ name: "Zippy", type: "Enemy", Age: 20 }
]);
现在我希望输出为
吉米30 乔治40
Zippy 20
有一个类似的jsfiddle link
答案 0 :(得分:2)
如果你想继续使用通用结构(不只是直接为“FriendTotalAge”和“EnemyTotalAge”创建计算机),那么你可以扩展distinct
扩展名以包含一个用于总数的属性。 / p>
例如,您可以传入要用作总计的属性的名称,并在扩展名中添加一个部分,如:
if (totalProp) {
for (key in propIndex) {
if (propIndex.hasOwnProperty(key)) {
propIndex[key].total = ko.computed(function() {
var total = 0;
ko.utils.arrayForEach(propIndex[key], function(item) {
total += parseInt(ko.utils.unwrapObservable(item[totalProp]), 10) || 0;
});
return total;
});
}
}
}
现在,您的索引可以是“type”并包含“age”属性的计算总计。