首页 > 解决方案 > 更新列表中的 ng-repeat 项时,仅更新最后一项

问题描述

我有一些数字的 ng-repeat 列表。我还将所有数字相加并在表格的页脚中显示总和。

现在我需要,当手动输入数字到 SUM 时,计算 ng-repat 中每个项目的数字。

在这里,我在 ng-repat 中调用 ng-init 并将 $index 和 item 传递给函数以计算总和

<tr ng-repeat="item in myCartItems track by $index" ng- 
init="storeValueOnScope($index, item)">


$scope.storeValueOnScope = function(index, item){
  $rootScope.indexOdabranihKlupa = index;
  $rootScope.impresijeKampanja = item.campaignImpressions;
}

最大展示次数与所选展示次数之间的百分比差异

$scope.getUserSelectedImpresion = function (impressions){
   $scope.userSelectedImpressionsSumBench = impressions;

   $scope.percentageDiff = $scope.userSelectedImpressionsSumBench  / 
     $rootScope.totaImpressionsSum * 100;

   $scope.calculateDiff($rootScope.indexOdabranihKlupa, 
     $rootScope.impresijeKampanja);
}

在这里我计算新数字,我想在已经加载到 DOM 的 ng-repeat 中放入一个新数字

$scope.calculateDiff = function(index, item) {
  $scope.myCartItems[index].campaignImpressions = (item * 
    $scope.percentageDiff) / 100; 
}

这是我想要获得新价值的部分

<input type="number" ng-model="item.campaignImpressions" ng-min="0" ng- 
max="item.maxValue" class="inputPolje" name="campaignImpressions" />

问题

当我计算所有这些时,我得到正确的数字,但仅适用于最后一项,而不是 ng-repeat 列表中的每一项

 |ID   | Available impressions (input) |
 |1000 |       5000                    | max: 5000
 |1004 |       5000                    | max: 5000
 |1098 |       4666.666666666666       | max: 5000 //only this one is calculated
 total max: 15000 (input field)
 user select: 14000 //this is number for make calculation

这是我的 json 示例

[{
"id": 1000,
"campaignImpressions": 5000,
"mediaImpressions": 5000,
"time": "20:30:00"
 }, {
"id": 1004,
"campaignImpressions": 5000,
"mediaImpressions": 5000,
"time": "20:30:00"
 }, {
"id": 1004,
"campaignImpressions": 5000,
"mediaImpressions": 5000,
"time": "20:30:00"
 }]

标签: angularjs

解决方案


推荐阅读