0

私は観察可能な配列を持っています

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

ジッピー 20

同様のjsfiddleリンクがあります

4

1 に答える 1

2

一般的な構造を維持したい場合 (「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/

于 2012-12-16T00:51:16.217 に答える