我將我的購物車存盤在 Vuex 中,并通過 API 呼叫將產品添加到購物車中。我想做的是根據每個產品的庫存,我想禁用API呼叫。所以在我的 getetrs 中:
export const checkStock = (state) => {
let stockAvailable = true;
state.cart.forEach(item => {
if(item.product.attributes.stock <= item.amount){
stockAvailable = false;
}
})
return stockAvailable;
}
我正在檢查庫存,如果庫存是正確的。在 Product 組件中,我正在呼叫 API 并將產品添加到購物車,并且我從 getters.js 檔案中獲取 checkStock 函式:
checkStockAvailability() {
return this.$store.getters.checkStock;
},
addToCart: function () {
this.amount = this.itemsCount !== "" ? this.itemsCount : 1;
if(this.variationId != null) {
this.warningMessage = false;
if(this.checkStockAvailability()) {
cartHelper.addToCart(this.product.id, this.variationId, this.amount, (response) => {
this.$store.dispatch('addProductToCart', {
product: this.product,
variation: this.variationId,
amount: parseInt(this.amount)
})
});
}
} else {
this.warningMessage = true;
}
},
所以這兩個函式的作用是:例如,我添加了有 5 個股票的產品 1,一旦我添加了這 5 個,我就不能添加更多,這也是正確的。但我也不能添加有足夠庫存的產品 2。所以我認為我需要將我的 checkStock 功能更改為產品,但我不知道該怎么做。所以請看看我的問題,讓我知道任何建議。
uj5u.com熱心網友回復:
所以,如果我理解正確的話,當產品 A 有 5 件庫存商品,而您購買這 5 件商品時,產品 B(也有 N 件庫存)也被標記為缺貨。
問題似乎出在您的 function 中checkStock,因為您正在執行一項forEach操作,并且一旦您看到 ONE 產品沒有足夠的可用專案,您就將其設定stockAvailable為 false,并回傳此值。因此,此功能不取決于您要求的產品,而是其中任何一個都不足以購買。您需要傳遞產品名稱或 ID(任何最適合您的)。
作為參考:
export const checkStock = (state, productName) => {
let stockAvailable = true;
state.cart.forEach(item => {
// First, you search for your product
if(item.product.name === productName) {
// Then you check if there is enough stock available
if(item.product.attributes.stock <= item.amount){
stockAvailable = false;
}
}
})
return stockAvailable;
}
最終實作將取決于item物件的配置。您可以按 id 而不是名稱進行搜索。此外,您可以在state物件中搜索此特定產品作為字典,而不是遍歷所有產品。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/328316.html
標籤:javascript Vue.js Vuejs2 vue 组件 Vuex
上一篇:vue-chart多實體初始化
