出现原因:
问题复现:
本来我是在computed中写了一个方法来监听table中的数据变化的,但是我发现出现一个Bug就是,当初次加载页面,并且多选优惠券时,金额并不会动态更新,但是当再次选中一张优惠券时,金额就更新了。于是我在网上找了好多方法,最后发现正就是因为变量名的问题所以一直更新不了变量值,导致总金额没有进行更新
初次加载进入页面时:
选中了两张优惠券但是总金额没有变: 然后再选中一张,金额就变了
我一直找了好久没有找到原因,然后我把变量名改了一下
刚开始是这样写的:
/** 计算优惠券的总金额 */
tableProductList({
table_product_list,
rate
}) {
return table_product_list.map(item => {
item.uuid = sourcing.uuid();
// 优惠券 原始金额是美元,需要转换成当前币种的金额
if (item.type == ErpCustomType['order_cost_type']['coupon'].value) {
const {
_price = ''
} = item;
// 拷贝一份金额的原始值(美元)
if (_price == '') {
item._price = item.price;
}
// 如果金额是负数 则转换成 正数 进行计算
const price = item._price > 0 ? item._price : Math.abs(item._price);
// 计算总金额
const total_price = sourcing.roundingUp(Number(rate) * Number(price));
item.price = -total_price;// 然后再将金额转换成负数
item.fee = total_price;
}
return item;
})
},
我把变量名命名为_price就有问题了,然后把_price改成了temp_price就可以了