AngularJS:在ng-change时不更新模型



我有一个angular应用程序,它有一个文本输入框,接受一个数字。这个盒子使用ng-model绑定到packsToReplenish。它还有一个ng-change调用updateAllCalculations()。这个想法是,当我在文本字段中输入一个数字,模型更新,然后updateAllCalculations执行。问题是,据我所知,模型永远不会更新,而是保持在0,不管我在框中输入什么。

因此,我的console.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;
       }
    }
}

添加超时,例如100毫秒。帮助我。

$scope.updateAllCalculations = function(idx) {
    $timeout(function() {
        ...
    }, 100)
}

就像我们在工作中说的:'角的第一条规则-如果什么东西不起作用,把它包裹在一个对象中';名称空间有问题;

$scope.tmpData = {
    packsToReplenish: 0,
    samples: []
};

最新更新