我正在尝试根据 api 调用给出的路径动态显示图像。所有其他数据都正确显示,但图像显示不正确。我怀疑我没有输入正确的路径。前端位于名为 client
的文件夹中,图像位于 cms
文件夹的子目录中,该文件夹与 client
位于同一目录中。
前端:root/client/src/components/Arrangements.vue
图片:root/cms/public/uploads/some-image.png
这是我的代码:
模板
<div v-if="arrangements.length">
<div :key="arrangement.index" v-for="arrangement in arrangements">
<img :src="getImages(arrangement.img.formats.thumbnail.url)" alt="">
<p>{{ `${arrangement.title}` }}</p>
<p>{{ `$${arrangement.price}` }}</p>
</div>
</div>
脚本
import axios from "axios";
export default {
data() {
return {
arrangements: []
}
},
mounted() {
axios.get("http://localhost:1337/arrangements")
.then(res => {
this.arrangements = res.data;
})
.catch(error => {
this.error = error;
})
},
methods: {
getImages(url) {
return '/cms/public' + url;
}
}
}
API 调用
编辑:
项目结构
我尝试访问图像的前端代码是 Arrangements.vue
,而图像在 cms/public/uploads
答案 0 :(得分:0)
您需要使用 require 来获取图像。试试这个方法。
就您而言,您可以使用这种方式。
getImages(url) {
return require('../../../cms/public/' + url);
}
注意:我认为您的图片路径是正确的。我习惯使用变量@ 来访问资产文件夹,类似这样:
<img :src="require('@/assets/img/my_image.png')" />
答案 1 :(得分:0)
试试这个
computed:{
getImages(){
var filename = this.arrangements
return require(`/cms/public/${fileName}.png`);
}
}
你必须把它放在计算中,这样当图像路径进来时它会重新加载图像,然后用 :src="getImages" 绑定它。