在您的應用程序會發生什麼實際的預期,因爲你每添加當前數量輸入變化。
更改爲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