element-plus的el-image设置error属性后占位图没显示怎么办
在用element-plus的el-image组件时,图片加载失败后设置的error属性里的占位图完全没显示,页面上直接显示空白区域。我检查过图片路径没问题,正常访问能打开,但出错时就是不显示占位图。
代码是这样写的:
<el-image
:src="imgUrl"
:error="errorImgPath"
style="width: 200px; height: 200px;"
></el-image>
尝试过把:error写成:error=”errorImgPath()”加括号,但控制台报errorImgPath未定义错误。看文档好像应该直接传路径字符串?是不是版本更新后用法改了?
你遇到的情况,很可能是因为 el-image 的 error 插槽没有正确处理。单纯传一个路径字符串是不够的,error 属性其实是要绑定一个 Vue 插槽的,而不是一个字符串路径。
你原来的写法:
这样写确实看起来没错,但其实 error 属性不能直接传路径字符串,而是应该配合一个 Vue 插槽来使用。你可以这样改:
然后你的 JS 里正常定义 errorImgPath 就行:
我当时也卡在这,以为 error 属性可以直接传图片路径,结果调试了半天才发现文档里提了一句要用插槽。现在 el-image 的 error 插槽是必须的,不是可选的。
如果你用的是较新的 element-plus 版本,官方推荐的用法就是插槽,单纯的 error 属性传字符串已经不生效了。可以试试上面的方法,应该就能正常显示占位图了。
el-image组件的error属性理解有偏差。error并不是直接用来传占位图路径的,它是一个回调函数,当图片加载失败时会触发这个函数。你需要在error的回调函数里手动设置一个默认的占位图。### 解决方案步骤
#### 1. 理解
error属性的作用error是一个函数,而不是直接传图片路径的地方。所以你之前写的或者:error="errorImgPath"都不对。我们需要定义一个函数,在这个函数里处理图片加载失败的情况。:error="errorImgPath()"#### 2. 使用一个默认占位图
首先准备一张默认的占位图,确保它的路径是正确的。比如你可以放一张图片在你的项目静态资源文件夹里(假设是
/src/assets/placeholder.png)。#### 3. 编写代码
下面是一个完整的解决方案:
#### 4. 代码解释
-
:监听图片加载失败事件,调用自定义的@error="handleError"handleError方法。- 在
handleError方法里返回默认的占位图路径。- 使用了 Vue 的
来引入静态资源路径,确保路径不会有问题。如果你直接用相对路径或者静态路径,可能会遇到路径解析错误。require#### 5. 注意事项
- 如果你在使用 Vue CLI 构建工具,记得把占位图放在
/public文件夹下或者通过引入到项目中。require-
error属性是个函数,不要试图直接传字符串进去,这是很多人容易犯的错。好了,按照这个方法改一下代码,应该就能正常显示占位图了。如果还有问题,可能是你的占位图路径有问题,仔细检查一下路径是否正确。