【发布时间】:2018-10-15 21:33:42
【问题描述】:
我无法正确计算循环内数组中的数值。
场景
-
tbody生成动态值列表。 -
td内部的button有一个名为function的preBookThis()和params。 - 当用户点击
button时,会触发function然后pushdata变成array variable。 - 在推送时,将有一个
for loop将迭代和计算值。 ($scope.nights是两个日期 - 即 2018-05-05 和 2018-05-07,因此其值为 2)
问题
-
假设
tbody中有三行,并且具有以下值。$scope.nights = 2; row1 = 100; row2 = 200; row3 = 300; -
当用户点击 第 1 行中的
button时,计算工作并按预期执行amount_row1 = 200;
但是……
-
当用户点击第2行中的
button时,第一行的计算值将加倍。amount_row1 = 400; amount_row2 = 400;
还有……
-
当用户点击第3行中的
button时,第一行和第二行的计算值将再次翻倍。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;
});
}
【问题讨论】:
-
我无能为力,因为我对这个主题了解得不够多。但我想赞扬你一个非常详细和高质量的答案。我相信这会增加得到答复的机会。
-
非常感谢您的称赞。我希望有人能回答,因为我对此感到非常沮丧,无法解决。
-
方法的最后一行是干什么用的?
-
另外,您似乎乘以
$scope.nights两次。 -
我在最后部分更新了我的代码,删除了可能会混淆其他人的不必要的代码。谢谢。
标签: javascript html angularjs loops lodash