<template>
<div>
<Header></Header>
<div class=" flex justify-center items-center" v-if="!item && !product">
<div class="animate-spin rounded-full h-20 w-20 border-b-2 border-sky-500"></div>
</div>
<div v-else>
<div class="grid md:grid-cols-2 my-5">
<div>
<img class="w-full h-52 md:h-96 md:w-96 mx-auto " :src="product.imagePath" alt="Extol Coffee">
</div>
<div class="mr-16 ">
<div class="grid grid-cols-4 text-5xl mb-3">
<p class="inline col-span-4">{{product.name}} - {{item.quantity_type}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Region</p>
<p class="inline text-justify col-span-3">{{product.region}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Growing Altitude</p>
<p class="inline text-justify col-span-3">{{product.growing_altitude}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Arabica Variety</p>
<p class="inline text-justify col-span-3">{{product.arabica_variety}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Milling Process</p>
<p class="inline text-justify col-span-3">{{product.milling_process}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Aroma</p>
<p class="inline text-justify col-span-3">{{product.aroma}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Flavor</p>
<p class="inline text-justify col-span-3">{{product.flavor}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Body</p>
<p class="inline text-justify col-span-3">{{product.body}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Acidity</p>
<p class="inline text-justify col-span-3">{{product.acidity}}</p>
</div>
<div class="grid grid-cols-4 mt-4 p-2">
<p class="inline col-span-1">Price</p>
<p class="inline text-justify col-span-3 text-2xl">${{item.price}}</p>
</div>
<div class="p-2 grid grid-cols-4">
<p class="inline col-span-1">Quantity</p>
<input class="w-32 h-10 rounded-md border-2 col-span-2 bg-white" type="number" name="quantity" id="quantity" v-model="quantity">
</div>
<div class="p-2">
<button class=" block bg-transparent border-sky-500 border-2 rounded-md w-52 h-10 mx-auto" v-on:click="addToCart()">
<span>Add to Cart</span>
</button>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Header from "./Header.vue";
export default {
name: "ViewItem",
data(){
return{
product:null,
quantity:0,
}
},
components:{
Header,
},
methods:{
addToCart(){
var itemToCart ={
product: this.product,
item: this.item,
quantity: +this.quantity,
};
if(itemToCart.quantity>0){
this.$store.dispatch("addItemToCart",itemToCart).then(r=>{}).catch(e=>console.log(e));
}
}
},
computed:{
item(){
var item = this.$store.getters.getProductQuantities.find(item => item.id == this.$route.params.id);
this.product= this.$store.getters.getProducts.find(product => product.id == item.product_id);
return item;
},
}
};
</script>
<style></style>
<template>
<div>
<Header></Header>
<div class=" flex justify-center items-center" v-if="!item && !product">
<div class="animate-spin rounded-full h-20 w-20 border-b-2 border-sky-500"></div>
</div>
<div v-else>
<div class="grid md:grid-cols-2 my-5">
<div>
<img class="w-full h-52 md:h-96 md:w-96 mx-auto " :src="product.imagePath" alt="Extol Coffee">
</div>
<div class="mr-16 ">
<div class="grid grid-cols-4 text-5xl mb-3">
<p class="inline col-span-4">{{product.name}} - {{item.quantity_type}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Region</p>
<p class="inline text-justify col-span-3">{{product.region}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Growing Altitude</p>
<p class="inline text-justify col-span-3">{{product.growing_altitude}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Arabica Variety</p>
<p class="inline text-justify col-span-3">{{product.arabica_variety}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Milling Process</p>
<p class="inline text-justify col-span-3">{{product.milling_process}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Aroma</p>
<p class="inline text-justify col-span-3">{{product.aroma}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Flavor</p>
<p class="inline text-justify col-span-3">{{product.flavor}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Body</p>
<p class="inline text-justify col-span-3">{{product.body}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Acidity</p>
<p class="inline text-justify col-span-3">{{product.acidity}}</p>
</div>
<div class="grid grid-cols-4 mt-4 p-2">
<p class="inline col-span-1">Price</p>
<p class="inline text-justify col-span-3 text-2xl">${{item.price}}</p>
</div>
<div class="p-2 grid grid-cols-4">
<p class="inline col-span-1">Quantity</p>
<input class="w-32 h-10 rounded-md border-2 col-span-2 bg-white" type="number" name="quantity" id="quantity" v-model="quantity">
</div>
<div class="p-2">
<button class=" block bg-transparent border-sky-500 border-2 rounded-md w-52 h-10 mx-auto" v-on:click="addToCart()">
<span>Add to Cart</span>
</button>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Header from "./Header.vue";
export default {
name: "ViewItem",
data(){
return{
product:null,
quantity:0,
}
},
components:{
Header,
},
methods:{
addToCart(){
var itemToCart ={
product: this.product,
item: this.item,
quantity: +this.quantity,
};
if(itemToCart.quantity>0){
this.$store.dispatch("addItemToCart",itemToCart).then(r=>{}).catch(e=>console.log(e));
}
}
},
computed:{
item(){
var item = this.$store.getters.getProductQuantities.find(item => item.id == this.$route.params.id);
this.product= this.$store.getters.getProducts.find(product => product.id == item.product_id);
return item;
},
}
};
</script>
<style></style>
<div>
<img class="w-full h-52 md:h-96 md:w-96 mx-auto " :src="product.imagePath" alt="Extol Coffee">
</div>
<template>
<div>
<Header></Header>
<div class=" flex justify-center items-center" v-if="!item && !product">
<div class="animate-spin rounded-full h-20 w-20 border-b-2 border-sky-500"></div>
</div>
<div v-else>
<div class="grid md:grid-cols-2 my-5">
<div>
<img class="w-full h-52 md:h-96 md:w-96 mx-auto " :src="product.imagePath" alt="Extol Coffee">
</div>
<div class="mr-16 ">
<div class="grid grid-cols-4 text-5xl mb-3">
<p class="inline col-span-4">{{product.name}} - {{item.quantity_type}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Region</p>
<p class="inline text-justify col-span-3">{{product.region}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Growing Altitude</p>
<p class="inline text-justify col-span-3">{{product.growing_altitude}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Arabica Variety</p>
<p class="inline text-justify col-span-3">{{product.arabica_variety}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Milling Process</p>
<p class="inline text-justify col-span-3">{{product.milling_process}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Aroma</p>
<p class="inline text-justify col-span-3">{{product.aroma}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Flavor</p>
<p class="inline text-justify col-span-3">{{product.flavor}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Body</p>
<p class="inline text-justify col-span-3">{{product.body}}</p>
</div>
<div class="grid grid-cols-4 border-b-2 border-gray-300 p-2">
<p class="inline col-span-1">Acidity</p>
<p class="inline text-justify col-span-3">{{product.acidity}}</p>
</div>
<div class="grid grid-cols-4 mt-4 p-2">
<p class="inline col-span-1">Price</p>
<p class="inline text-justify col-span-3 text-2xl">${{item.price}}</p>
</div>
<div class="p-2 grid grid-cols-4">
<p class="inline col-span-1">Quantity</p>
<input class="w-32 h-10 rounded-md border-2 col-span-2 bg-white" type="number" name="quantity" id="quantity" v-model="quantity">
</div>
<div class="p-2">
<button class=" block bg-transparent border-sky-500 border-2 rounded-md w-52 h-10 mx-auto" v-on:click="addToCart()">
<span>Add to Cart</span>
</button>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Header from "./Header.vue";
export default {
name: "ViewItem",
data(){
return{
product:null,
quantity:0,
}
},
components:{
Header,
},
methods:{
addToCart(){
var itemToCart ={
product: this.product,
item: this.item,
quantity: +this.quantity,
};
if(itemToCart.quantity>0){
this.$store.dispatch("addItemToCart",itemToCart).then(r=>{}).catch(e=>console.log(e));
}
}
},
computed:{
item(){
var item = this.$store.getters.getProductQuantities.find(item => item.id == this.$route.params.id);
this.product= this.$store.getters.getProducts.find(product => product.id == item.product_id);
return item;
},
}
};
</script>
<style></style>图像存在并在其他组件中输出,但在此组件中不存在。我使用item.product_id从状态中获取产品对象。它获取产品,并填充该区域,生长altitude.....etc和图像路径。在DOM中,图像路径被正确填充,但它显示“无法加载图像”错误,然后显示alt文本“赞美咖啡”。该图像路径工作良好,因为其他组件使用它并显示在那里的图像。

动态显示图像
发布于 2022-04-01 15:43:28
您是否检查了控制台并看到没有对图像的错误请求?如果全部清除,那么这个‘w-满h-52 md:h-96 md:W-96MX-auto’类有什么问题,我建议清除这些类并查看结果。
https://stackoverflow.com/questions/71705098
复制相似问题