Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何在每行中求和特定列中前几行的值?_Angularjs - Fatal编程技术网

Angularjs 如何在每行中求和特定列中前几行的值?

Angularjs 如何在每行中求和特定列中前几行的值?,angularjs,Angularjs,我用计算机模拟了我的问题 我有这个HTML: 如何在第三列中填充角度 第三列最初应为: 149.98 // due to 0.00 + 149.98 279.97 // due to 149.98 + 129.99 629.87 // due to 279.97 + 349.90 699.87 // due to 629.87 + 70.00 然后,ng模型应该在以后自动更新它们 提前感谢。您可以在作用域中添加一个函数来计算该索引处的总数。

我用计算机模拟了我的问题

我有这个HTML:

如何在第三列中填充角度

第三列最初应为:

149.98       // due to   0.00 + 149.98
279.97       // due to 149.98 + 129.99
629.87       // due to 279.97 + 349.90
699.87       // due to 629.87 +  70.00
然后,ng模型应该在以后自动更新它们


提前感谢。

您可以在作用域中添加一个函数来计算该索引处的总数。您必须记住,您使用的是
order by
,这意味着您应该使用
as
语法来计算有序列表中的值

CalculatePay功能:

$scope.calculatePay = function(index) {
  var sum = 0;
  for(var i = 0; i <= index; i++) {
    sum += parseFloat($scope.orderedList[i].cash);
  }
  return sum;
};
$scope.calculatePay=函数(索引){
var总和=0;

对于(var i=0;i,您可以向作用域中添加一个函数来计算该索引处的总数。您必须记住,您使用的是
order by
,这意味着您应该使用
as
语法来计算有序列表中的值

CalculatePay功能:

$scope.calculatePay = function(index) {
  var sum = 0;
  for(var i = 0; i <= index; i++) {
    sum += parseFloat($scope.orderedList[i].cash);
  }
  return sum;
};
$scope.calculatePay=函数(索引){
var总和=0;

对于(var i=0;i您需要以代码进行排序,因为ng repeat中的
orderBy
会创建一个用于显示的新列表,并且不会修改原始列表。这意味着显示列表中的项目索引与原始列表中的项目索引不匹配。您还需要在付款集合上设置一个监视程序来自动执行此操作自动更新每个位置的总计

差不多

$scope.$watch('payments', function(newPayments) {
    $scope.payments = orderByFilter($scope.payments, "date");
    $scope.total = 0;
    angular.forEach($scope.payments, function(payment) {
        $scope.total += parseFloat(payment.cash);
        payment.total = $scope.total;
    });
}, true);

Fiddle:

您需要以代码进行排序,因为ng repeat中的
orderBy
会创建一个用于显示的新列表,并且不会修改原始列表。这意味着显示列表中的项目索引与原始列表中的项目索引不匹配。您还需要在付款集合上设置一个监视者来进行aut手动更新每个位置的总数

差不多

$scope.$watch('payments', function(newPayments) {
    $scope.payments = orderByFilter($scope.payments, "date");
    $scope.total = 0;
    angular.forEach($scope.payments, function(payment) {
        $scope.total += parseFloat(payment.cash);
        payment.total = $scope.total;
    });
}, true);

Fiddle:

我会避免在作用域中添加深度监视,这可能会影响具有大量监视程序的应用程序的性能。我不知道为什么..但对我来说,它表明
orderByFilter未定义
您需要将
orderByFilter
注入控制器。哦..我明白了,是我从答案中复制的,而不是Fiddle..+1uld避免向作用域添加深度监视,这可能会影响具有大量监视程序的应用程序的性能。我不知道为什么。但对我来说,它表明
orderByFilter未定义
你需要将
orderByFilter
注入控制器。哦..我明白了,这是我从答案中复制的,而不是小提琴..+1我在这里挣扎。。我将我的角度更新为您在plunker中使用的角度。现在,您的答案很好。谢谢!!我在这里挣扎。我将我的角度更新为您在plunker中使用的角度。现在,您的答案很好。谢谢!!
$scope.$watch('payments', function(newPayments) {
    $scope.payments = orderByFilter($scope.payments, "date");
    $scope.total = 0;
    angular.forEach($scope.payments, function(payment) {
        $scope.total += parseFloat(payment.cash);
        payment.total = $scope.total;
    });
}, true);