2014-10-10 2 views
0

То, что я пытаюсь достичь, вот так. Там будет два столбца, в которых выполняется текущее количество продуктов, которые у меня есть в моей руке, следующий - столбец для упаковки, у него будет текстовое поле со значением по умолчанию 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

ответ

1

Попробуйте

row.packed = Number(row.packed) + Number(row.newquantity); 

Вот fiddle

1

Попробуйте

row.packed = parseInt(row.packed, 10) + parseInt(row.newquantity, 10); 
Смежные вопросы