我有一个输入字段,用于存储ng-repeat的和。 页面加载时为空,并且当用户将项目添加到ng-repeat时,总和会动态添加。但是用户可以手动输入总和。现在,我需要一个旧值(首先是用户将某项添加到ng-repeat列表中),如果用户手动输入数字,则需要新值。
<table>
<tbody>
<tr ng-repeat="item in myCartItems | unique: 'id'" on-finish render="ngRepeatFinished">
<td>{{item.campaignImpressions}}</td>
<td><input type="number" ng-model="campaignViewsTotalGoal" ng-name="sumImpressions" ng-value="myCartItems | sumOfValue:'campaignImpressions'">
</td>
</tr>
</tbody>
</table>
求和指令
.filter('sumOfValue', function() {
return function(data, key) {
if (angular.isUndefined(data) || angular.isUndefined(key))
return 0;
var sum = 0;
angular.forEach(data, function(v, k) {
sum = sum + parseInt(v[key]);
});
return sum;
}
});
我尝试添加<input>
ng-change="updateValue(campaignViewsTotalGoal, '{{campaignViewsTotalGoal}}')"
但是我得到了旧值UNDEFINED
,因为在页面加载时该值不存在。我也尝试ng-init
,就像ng-change
一样,得到未定义的旧值。
示例:
当我向ng-repeat
添加项目时,sum is 5000
。
现在我输入6000
,ng-change
函数得到我
oldVal = undefined;
newVal = 6000;
如果我再次输入一个新数字8555,现在ng-change函数会给我正确的值
oldVal = 6000;
newVal = 8555;
我也尝试使用$watch
,但得到的结果相同
$scope.$watch('campaignViewsTotalGoal', function(newValue, oldValue) {
console.log(oldValue); //first i get undefined, after working normal
console.log(newValue);
});
第一个值(oldVal)始终是我得到的第一个值,但newVal需要更改 例如,当我获得第一个款项5000并输入新的款项6000时,我需要获取
oldVal: 5000
newVal: 6000;
如果我再次输入8555而不是6000,我需要获取oldVal的第一个初始总和
oldVal: 5000:
newVal: 8555;