angularjs - 更新列表中的 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"
}]
解决方案
推荐阅读
- vue.js - Vue js 的 CORS 问题
- c# - 如何设置提交 sm 让客户端使用 jamaa smpp 中的属性发送消息?
- r - 将 purrr 的“modify_if”与函数一起使用
- html - 如何在使用图像映射创建的特定区域中添加图钉
- javascript - Vanilla JS 中的路由(?)
- tensorflow - 例外:无法启动 TensorBoard。在谷歌云数据实验室
- c++ - 使用 QOpenGLWidget 类显示点云时如何加速?
- curl - 无法使用 openssl (MinGW) 构建 curl
- ajax - "$request->ajax()" 为什么不能在 laravel 中间件中工作?
- php - 输入 mp3 文件返回 0