miz*_*zar 4 javascript vue.js vuetify.js
我需要使用 vuetify 动态加载图像(来自我的文件系统而不是 url)。但是,当我在 v-img 元素中绑定路径变量时,vue 找不到它。当我使用“必需”方法静态放置它时,就可以了。
如何使用 vuetify 选择动态路径?这是文件加载器的问题吗?
我希望在运行时动态选择图像。例如,如果我有“下一个”按钮,我想加载下一个图像。这是 Vue.js 中的代码
<html>
<v-img
v-bind:src="require(myPath)"
aspect-ratio="1.5"
max-height="500"
contain
/>
</html>
<script>
data: () => ({
mycount: 1,
myPath: "../myimages/2.png"
})
</script>
Run Code Online (Sandbox Code Playgroud)
[Vue 警告]:渲染错误:“错误:找不到模块‘../myiamges/2.png’”在 ---> 中找到 ---> at src/App.vue vue.runtime.esm.js:619 错误:“找不到模块 '../imyimages/2.png'" webpackEmptyContext 组件同步:2 渲染 Gamesheet.vue:30 VueJS 21 运行 es6.promise.js:75 通知 es6.promise.js:92 刷新 _microtask.js:18 vue .runtime.esm.js:1888
miz*_*zar 14
经过长时间的研究和尝试,我找到了自己问题的答案。
这里的问题在于“require”方法。在编译期间,当我使用动态路径时,它需要知道图像所在的文件夹。见这里。因此,动态提供包含文件名的路径不会启用“require”方法来仅识别文件夹。那是我的解释。
所以我修改了这样的代码,它对我有用:
<html>
<v-img
v-bind:src="require('../myimages/' + myFilename)"
aspect-ratio="1.5"
max-height="500"
contain
/>
</html>
<script>
data: () => ({
mycount: 1,
myFilename: "2.png"
})
</script>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可以在运行时更改 myFilename 并且它也能正常工作。