在输入字段中获取新旧值会使我不确定

时间:2018-07-05 09:56:48

标签: javascript angularjs

我有一个输入字段,用于存储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。 现在我输入6000ng-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;

0 个答案:

没有答案