获取对象中所有值的总和 - ng-repeat

时间:2016-12-02 19:09:16

标签: angularjs angularjs-directive sum angularjs-ng-repeat

我觉得我在这里遗漏了一些基本的东西,并希望得到一些帮助。

我有一些看起来像这样的数据

infixNotation

还是一个ng-repeat,它是playerPoints中的玩家,它显示了每个玩家点数的列表。但是我想在每个列表的末尾添加一个总数。这加起来所有特定的球员积分。在这种情况下,ted会有5,而bill会有6。

我环顾四周并没有真正遇到过看起来会起作用的东西,但这是缺少基本信息的地方。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分: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>

如果在服务中正确完成并作为服务的属性存储,视图将自动数据绑定,并且如果对象的数据发生更改,将动态更新。