对表单元格的Ng-change更新所有单元格

ng-change on a table cell updates all cells

本文关键字:单元格 更新 表单 Ng-change      更新时间:2023-09-26

我有一个列表,我需要在表更改事件上计算其他单元格的值。我想用ng-change来做这件事,这样可以立即看到变化。问题是,我不知道如何正确使用ng-model——如果在一行中使用,它将在所有行中使用,所以每一行都要重新计算,这是我不想要的。我想每次只更新一行。

Angular需要ng-model,其中使用了ng-change。如何正确使用ng-change,在表中有几行?

我可以用jQuery的onchange事件来做这件事,但是我已经在HTML上有了控制器,所以我想在angular中做所有的事情。

其中一行的示例:

        <tr class="jtable-data-row jtable-row-even" 
data-record-key="110000001"><td>110000001</td>
            <td><input type="text" 
    ng-change="RecalculateValues($event);" ng-model="Quantity" value="1"></td>
            <td><input type="text"
    ng-change="RecalculateValues($event);" ng-model="Bruto" value="7.15"></td>
            <td><input type="text"
    ng-change="RecalculateValues($event);" ng-model="Neto" class="cellContent" class="cellContent" value="17"></td>
            </tr>
编辑:

Plunker这里显示了我的问题-单元格没有更新,尽管ng-change事件连接到输入值。

你做错了。

的例子:

<tr>
  <td>{{total}}</td>
  <td>
    <input type="text" ng-change="calculate()" ng-model="quantity">
  </td>
  <td>
    <input type="text" ng-change="calculate()" ng-model="bruto">
  </td>
</tr>

控制器:

$scope.quantity = 1;
$scope.bruto = 7.5;
$scope.total = 0;
$scope.calculate = function() {
  $scope.total = $scope.quantity * $scope.bruto;
}
$scope.calculate();

如果您有多个表行,您将需要一个对象数组,每个对象包含一个数量、bruto和total。

<tr ng-repeat="n in valuesArray">
  <td>{{n.total}}</td>
  <td>
    <input type="text" ng-change="calculate($index)" ng-model="n.quantity">
  </td>
  <td>
    <input type="text" ng-change="calculate($index)" ng-model="n.bruto">
  </td>
</tr>

控制器:

$scope.valuesArray = [
  {quantity: 1, bruto: 7.5, total: 0},
  {quantity: 1, bruto: 7.5, total: 0},
  {quantity: 1, bruto: 7.5, total: 0},
];
$scope.calculate = function(index) {
  $scope.valuesArray[index].total = $scope.valuesArray[index].quantity * $scope.valuesArray[index].bruto;
}

您缺少应用程序初始化。所以方法上的变化永远不会被触发。

请添加<body ng-app="myApp">