AngularJS计算几个相同对象的总计

时间:2017-04-06 19:53:31

标签: javascript angularjs

我有一个前端,有一个订单表。每个订单可以交付,不交付或部分交付。我需要根据选择的选项计算总数(所以总计也被过滤了),我确实找到了一个解决方案,但我知道我过于复杂,我不是一个AngularJS dev。

function calculateTotals() {

    var properties = ['total_amount', 'total_price', 'order_total_amount', 'order_total_price'];
    var keys = ['_', '_not', '_part', '_done', 'n-p'];

    angular.forEach(properties, function (prop) {
        vm.sales[prop] = {'_': 0, '_not': 0, '_part': 0, '_done': 0, 'n-p': 0};
    });

    angular.forEach(vm.sales, function (sale) {
        angular.forEach(properties, function (prop) {
            vm.sales[prop]['_'] += sale[prop] * 1;
            angular.forEach(keys, function (key) {
                vm.sales[prop][key] += (sale.status == key) ? sale[prop] * 1 : 0;
            });
        });
    });

    angular.forEach(properties, function (prop) {
        vm.sales[prop]['_'] -= vm.sales[prop]['n-p'];
    });
}

前面需要4个变量,总金额和总价(很多交货的总和,从Laravel后端总结),订单总价和订单总金额(从Laravel后端取货)。

我该如何简化?

编辑感谢stej4n我已经达到了这个目标......虽然我仍觉得它可以变得更简单

@Entity
public class Person {

  @Id @GeneratedValue(strategy=GenerationType.TABLE, generator="tableGenerator")
  private Integer id;
  private String name;

  //getters and setters...

1 个答案:

答案 0 :(得分:1)

最后4行可以通过这种方式简化:

import sys, os, django
sys.path.append('vagrant/nested_tree/nested_tree_project')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'nested_tree_project.settings')
django.setup()

angular.forEach(['total_amount', 'total_price', 'order_total_amount'], function(prop) { vm.sales[prop] -= vm.sales[prop]['n-p']; }); 来自哪里? vm.sales的任何对象中都不存在(sale.status == key)属性?

其他优化:删除每个status,它不应该更改任何内容^^