我有一个计算方法,可以让我计算我的产品和折扣价值的总价,并希望得到以下价值:总折扣。
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;
}
Doens不适合我,我得到Maximum call stack size exceeded
错误。
答案 0 :(得分:3)
您收到该错误是因为您有两个相互引用的计算属性'值。无论何时这样做,您都会创建一个循环依赖项,这将产生一个"超出最大调用堆栈大小"错误。
你真的有三个价值你正在处理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;
},
}