求和数组的每个值

时间:2016-04-14 13:43:01

标签: angularjs

我需要在产品列表中汇总价格,并在产品添加到列表时保持更新总和。

我正在使用服务,因为项目将填充其他数组的对象。但是在下面的代码中$scope.total不返回任何内容:

数组示例: $ scope.items = [         {id:1,nome:“NossoCafé”,preco:5,如:69,quantdade:1,img:'img / mais_1.jpg'}     ];

.controller('pedidoCtrl', function($scope, produtoService) {

    $scope.items = null;
    $scope.items = produtoService.getProdutos();

    $scope.deleteItem = function(item) {
        $scope.items.splice($scope.items.indexOf(item), 1);
    };

    $scope.$watchCollection('items', function(array) {
        var total = 0;
        if (array) {
            angular.forEach(array, function(index) {
                total += array[index].preco;
            });
        }
        $scope.total = total;
    });
})

.service('produtoService', [function() {
    var produtosLista = [];

    var addProduto = function(produto) {
        produtosLista.push(produto);
    };

    var getProdutos = function() {
        return produtosLista;
    };
    return {
        addProduto: addProduto,
        getProdutos: getProdutos,
    };
}]);

2 个答案:

答案 0 :(得分:5)

您不想将产品总数添加到foreach变量吗?然后将其分配给resultado

$scope.total

或者你可以做

$scope.$watchCollection('items', function(array) {
     var total = 0;
     if (array) {
         angular.forEach(array, function(item) {
             total += item.preco;
         });
     }
     $scope.total = resultado;
 });

答案 1 :(得分:0)

试试这个:

$scope.$watchCollection('items', function(array) {
    var total = 0;
    if (array) {
        angular.forEach(array, function(value) {
            total += value.preco;
        });
    }
    $scope.total = total;
});