我有一个列表,我需要在表更改事件上计算其他单元格的值。我想用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">