2016-12-02 45 views
0

我覺得我缺少一些基本的東西,並且會喜歡一些幫助。獲取對象中所有值的總和 - ng-repeat

我有一些數據,看起來像這樣

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

而一個NG-重複在playerPoints播放器,它顯示了每個玩家點的列表。但是我想在每個列表的末尾添加一個總數。這增加了所有特定玩家的點數。在這種情況下泰德將有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> 

如果在服務中正確完成並作爲服務的屬性存儲,視圖將自動進行數據綁定,並且如果對象的數據更改將動態更新。