关于绑定图像src
的工作方式,已经有很多问题,我已经遍历了,其中提到使用require
导入图像。但是,我的问题有点不同:我正在根据用户选择的当前src
更改图像locale
。我尝试仅基于src
绑定currentLocale
中的字符串,但是图像未加载。我还在绑定中尝试了require
。
资产的文件结构:
+ en
`-- download.jpeg
|
+ fr
`-- download.jpeg
我的组件:
<template>
<div>
<img :src="'../assets/en/' + this.currentLocale + '/download.jpeg'">
</div>
</template>
<script>
//import { imageSrc } from "@/assets/en/download.jpeg";
export default {
name: "HelloWorld",
data() {
return {
currentLocale: "en"
};
}
};
</script>
答案 0 :(得分:0)
您的src
绑定路径中有错误(en
硬编码):
<img :src="'../assets/en/' + this.currentLocale + '/download.jpeg'">
^^^
但是它也应该在该路径上使用require
关键字:
<img :src="require('../assets/' + this.currentLocale + '/download.jpeg')">
一些优化:
this
在组件模板中是不必要的,因此您可以只使用currentLocale
而不是this.currentLocale
src
目录(即@
)提供了路径别名,因此您可以使用@/assets
代替../assets
结果:
<img :src="require('@/assets/' + currentLocale + '/download.jpeg')">
Codesandbox似乎在require
输入图像资产时显示a bug,因此上面的代码在那里不起作用。在Vue-CLI生成的项目中本地尝试。