У меня есть угловое приложение, которое имеет текстовое поле ввода, которое принимает число. Этот квадрат связан с использованием ng-model
до packsToReplenish
. Он также имеет ng-change
, который вызывает updateAllCalculations()
. Идея состоит в том, что когда я ввожу число в текстовое поле, модель обновляется, а затем выполняется updateAllCalculations
. Проблема в том, насколько я могу сказать, что модель никогда не обновляется, а оставаясь на уровне 0, независимо от того, что я вхожу в поле.AngularJS: модель не обновляется на ng-change?
Из-за этого моя консоль.log всегда показывает 0 для вывода связанной модели, а затем логика выходит из строя из-за неточных данных. Может ли кто-нибудь сказать мне, как это исправить?
Вот соответствующие фрагменты кода:
HTML
<input type="number" class="form-control" ng-model="packsToReplenish" ng-change="updateAllCalculations()" required>
JavaScript (в приложении и контроллер, конечно - просто опущен для экономии места)
$scope.packsToReplenish = 0;
$scope.samples = []; //populated elsewhere
$scope.updateAllCalculations = function() {
for (var i = 0; i < $scope.samples.length; i++)
$scope.updateCalculations(i);
}
$scope.updateCalculations = function(idx) {
console.log("Update Calculations " + idx + " - " + $scope.packsToReplenish); //always displays 0, and because of this the logic below doesnt execute properly
if ($scope.samples[idx].packages[0].openBox > 0)
{
if ($scope.samples[idx].packages[0].openBox >= $scope.packsToReplenish)
{
$scope.samples[idx].packages[0].maxUnitsToUse = $scope.packsToReplenish;
$scope.samples[idx].packages[0].newOpenBoxUnits = $scope.samples[idx].packages[0].openBox - $scope.packsToReplenish;
}
else
{
$scope.samples[idx].packages[0].maxUnitsToUse = $scope.samples[idx].packages[0].openBox;
$scope.samples[idx].packages[0].newOpenBoxUnits = 0;
}
}
}
Проверьте http://jsfiddle.net/4b5pqr5u/1/. Он работает хорошо. Проверьте свой метод настройки $ scope.samples. Или вы можете сбросить 'packsToReplenish' где-то еще. – Joy