У меня проблемы с правильным вычислением числовых значений в массиве внутри цикла.
Сценарий
-
tbody
создает список динамических значений.
-
button
внутри td
имеет function
, называемый preBookThis()
с params
.
- Когда пользователь нажимает
button
, он запускает function
, а затем push
data
в array variable
.
- После нажатия будет
for loop
, который будет выполнять итерацию и вычислять значения. ($scope.nights
- это две даты - т.е. 2018-05-05 и 2018-05-07, поэтому он будет иметь значение 2)
Проблема
Давайте представим, что в tbody
было три строки и имеют следующие значения.
$scope.nights = 2;
row1 = 100;
row2 = 200;
row3 = 300;
Когда пользователь нажимает button
в строке 1 , вычисление работает и выполняется как ожидалось
amount_row1 = 200;
но ...
Когда пользователь нажимает button
в строке 2 , вычисленные значения первой строки будут удвоены.
amount_row1 = 400;
amount_row2 = 400;
а также ...
Когда пользователь нажимает button
в строке 3 , вычисленные значения первой строки и второй строки снова удваиваются.
amount_row1 = 800;
amount_row2 = 800;
amount_row3 = 600;
Окончательный результат должен быть:
amount_row1 = 200;
amount_row2 = 400;
amount_row3 = 600;
HTML
<tbody ng-repeat="room in roomsDisplay">
<tr>
<td>
<div class="col-md-6"><img ng-src="images/rooms/{{room.room_image}}"></div>
</td>
<td>
<div style="margin-top: 20px;"><input type="button"
ng-click="preBookthis({room})" class="btn btn-primary"
value="Book this Room"></div>
</td>
</tr>
</tbody>
JS
$scope.preBookthis = function(data){
$scope.totalAmount = 0;
$scope.bookData.push({
'room_name': data.room.room_name,
'price': data.room.price,
'amount': $scope.amount,
'id' : data.room.rooms_type_id
});
_.forEach($scope.bookData, function(value, key){
value.amount = value.amount * $scope.nights;
});
}