我有一个计算方法,可以让我计算产品的总价和折扣值,并希望获得以下值:总计 - 折扣。
cartTotal() {
var total = 0;
var discount = Math.round((0.1 * this.cartTotal) * 100) / 100;
this.cart.items.forEach(function(item) {
total += item.quantity * item.product.price;
});
total -= discount;
return total;
}
对我不起作用,我明白了Maximum call stack size exceeded
error.
您收到该错误是因为您有两个引用彼此值的计算属性。无论何时执行此操作,都会创建循环依赖关系,这将生成“超出最大调用堆栈大小”错误。
您实际上要处理三个值:1) 购物车中所有值的总和,2) 折扣金额,3) 总价值,即总和减去折扣。
您应该具有三个计算属性:
computed: {
cartSum() {
return this.cart.items.reduce((n, i) => n += i.quantity * i.product.price, 0);
},
discountValue() {
return Math.round((0.1 * this.cartSum) * 100) / 100;
},
cartTotal() {
return this.cartSum - this.discountValue;
},
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)