То, что я пытаюсь достичь, вот так. Там будет два столбца, в которых выполняется текущее количество продуктов, которые у меня есть в моей руке, следующий - столбец для упаковки, у него будет текстовое поле со значением по умолчанию 0, когда я изменяю значение внутри этого текстового поля и нажимаю кнопку отправки. Я хочу, чтобы это значение вычитается из моего первого столбца (количества) (что делается). После этого я хочу добавить значение в текстовое поле вместе в последнем столбце и продолжить, чтобы я мог видеть, сколько вещей до сих пор упаковано. Я сделал что-то вроде этогоНевозможно выполнить математические вычисления в angularJS
<div ng-app='myApp' ng-controller="MainCtrl">
<div ng-repeat="prdElement in packageElement track by $index" class="package-grid">
<table class="hovertable">
<thead>
<tr>
<th>Line #</th>
<th>Quantity in Plt</th>
<th>Allready Packed</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="data in prdElement.Data" ng-init="data.newquantity = 0">
<td>{{data.itemId}}</td>
<td>
<input type="text" ng-model="data.newquantity" placeholder="Quantity" required=required />
</td>
<td>{{data.packed}}</td>
</tr>
<tr>
<td width="100%" colspan="4">
<button ng-show="prdElement.show" ng-click="newPackageItem(prdElement,$event)">Next Pallet</button>
</td>
</tr>
</tbody>
</table>
</div>
(function() {
angular.module('myApp', []).controller('MainCtrl', function ($scope) {
var counter = 0;
$scope.packageElement = [{
name: counter,
show: true,
Data: [{
name: 'item 1',
itemId: '284307',
quantity: '100',
packed: 0
}, {
name: 'item 2',
itemId: '284308',
quantity: '200',
packed: 0
}]
}];
$scope.newPackageItem = function (packageElement, $event) {
var npackageElement = {};
angular.copy(packageElement, npackageElement);
counter++;
packageElement.show = false;
npackageElement.name = counter;
angular.forEach(npackageElement.Data, function (row) {
if (row.quantity != row.newquantity || row.quantity != 0) {
row.quantity = row.quantity - row.newquantity;
row.packed = row.newquantity;
}
});
npackageElement.show = true;
angular.forEach(packageElement.Data, function (row) {
row.packed = row.packed + row.newquantity;
});
$scope.packageElement.push(npackageElement);
};
});
}());
Все сделано, за исключением, когда Quantity in Plt
является Adde d и нажатой кнопки, я хочу, чтобы это количество отображалось на последнем столбце (уже упаковано) и отслеживалось в последующих строках. Я сделал (а) попытку, как вы можете видеть здесь.
row.packed = row.packed + row.newquantity;
но добавление не работает правильно, а значения объединяются. Fiddle