在您的应用程序会发生什么实际的预期,因为你每添加当前数量输入变化。
更改为ng-blur
或在更新值之前设置超时,使用内置的ng-model-options
(现在可以在Angular 1.6(昨天发布)中完成)可能是不错的选择。
<input type="text" ng-model="amount1" ng-change="amountchange()" ng-model-options="{'debounce':{'default':300}}" />
或:
<input type="text" ng-model="amount1" ng-blur="amountchange()" />
不过,我不建议他们要么,和这里的原因:
不让当他们进入了数据提交的用户决定(例如:按enter
或一个提交按钮),你会使用户不友好,并引入不需要的行为,例如当用户在第二个示例中点击和关闭时,该号码将被一次又一次地添加...
考虑使用表单和ng-submit
,因为它更干净,更具语义性,同时也为您的用户提供更友好的方式来提交数据。
而且这里的解决方案,你的其他问题:
$scope.amountchange = function() {
var amount = ($scope.amount1 != '') ? $scope.amount1 : 0;
console.log(amount)
if (amount != NaN) {
$scope.total = parseInt(amount) + parseInt($scope.total);
}
else {
alert("Please enter a number.");
$scope.amount1 = $scope.total;
}
}
为了解释:首先,你没有使用任何参数,因此你不需要到amount1
模型的价值传递到函数中的指示。但那不是问题。将其设置为空的原因是空字段不会解析为0
,因此您必须自行设置它。我将该值保存到该函数的变量amount
中,并且如果值恰好为空,则将值赋值为$scope.amount
或0
。
不明白什么是期望? –
在输入的每个数字上,更新'$ scope.total'值。例如:输入500时,先输入“5 + 200”,然后输入“50 + 205”,然后输入“500 + 255”。检查控制台[**这里**](https://jsfiddle.net/tusharj/XNVj3/2245/) – Tushar
顺便说一句,你不需要'amount1'到'amountchange()'。 – Tushar