【问题标题】:Knockout JS Observable array data group total age count per sectionKnockout JS Observable 数组数据组每个部分的总年龄计数
【发布时间】:2012-12-03 13:26:44
【问题描述】:

我有一个可观察的数组

var myArray = ko.observableArray([
      { name: "Jimmy", type: "Friend", Age: 30 },
      { name: "George", type: "Friend", Age: 40 },
      { name: "Zippy", type: "Enemy", Age: 20 }
    ]);

现在我希望我的输出为

朋友总年龄:70

吉米 30 乔治 40 岁

敌人总年龄:20

Zippy 20

有一个类似的jsfiddle link

【问题讨论】:

    标签: javascript html knockout.js knockout-mapping-plugin


    【解决方案1】:

    如果您想保持通用结构(不只是直接为“FriendTotalAge”和“EnemyTotalAge”创建计算),那么您可以扩展 distinct 扩展以包含用于总计的属性。

    例如,您可以传入要用作总计的属性的名称,并在扩展名中添加一个部分,例如:

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

    现在,您的索引可以按“类型”并包含“年龄”属性的计算总数。

    这里的小提琴更新:http://jsfiddle.net/rniemeyer/yrh5D/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-13
      • 2016-04-28
      • 2019-05-03
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      相关资源
      最近更新 更多