2016-12-02 5 views
0

私はここで何か基本的なものが欠けているように感じています。object - ng-repeatのすべての値の合計を取得する

私はこの

"playerPoints"{ 
    "ted":{"military":3,"gold":2}, 
    "bill":{"military":2,"gold":4} 
} 

そしてplayerPointsでプレイヤーであり、それは各プレイヤーポイントのリストを示しNG・リピートのように見えるいくつかのデータを持っています。しかし、私は各リストの最後に合計が欲しい。それは、その特定の選手のポイントをすべて追加します。この例ではテッドは5を持っているでしょうし、法案は、私は周りを見回していると、本当にそれがうまくいくように思える何かに遭遇していない6.

持っているだろうが、不足している基本的な情報が遊びに来ることができる場所です。

+1

これは 'ng-repeat'と何が関係していますか?ビュー以外の場所で計算を行う必要があります。 – isherwood

+0

あなたが試したことを見るためにいくつかのHTMLコードを投稿してください。 – rakemen

+0

HTMLは必要ありません。これを行うコントローラまたはサービス関数が必要であり、合計点のキーと値のペアでオブジェクトを更新します。 – isherwood

答えて

1

コントローラまたはサービスで、これを事前に実行する機能が必要です。この未テストの例のような何か:

myService.data = { 
    "playerPoints": { 
     "ted": { 
      "military": 3, 
      "gold": 2 
     }, 
     "bill": { 
      "military": 2, 
      "gold": 4 
     } 
    } 
}; 

function sum(obj) { 
    var sum = 0; 
    for (var el in obj) { 
     if (obj.hasOwnProperty(el)) { 
      sum += parseFloat(obj[el]); 
     } 
    } 
    obj[el]["total"] = sum; 
} 

sum(myService.data.playerPoints); 

あなたのコントローラで使用すると、サービスのプロパティに変数を割り当てるでしょう:あなたのビューで次に

ctrl.playerData = myService.data; 

することができます単に出力そのキーの値:

<div ng-repeat="player in ctrl.playerData"> 
    <span>{{player.total}}</span> 
    ... 
</div> 

サービスで適切に行われ、ビューは自動的にデータバインドされると、オブジェクトのデータが変更された場合、動的に更新されるサービスのプロパティとして格納されている場合。

関連する問題