はじめに
最近Nuxt.js を触り始めて、Typescript までたどり着くことを目標に学習始めました。
やりたいこと
あるページで、サーバから指定された画像を表示しますが、それが存在しない時はフロントサイドで持っている情報で固定画像を表示したいです。
試したやりかた
page.vue
<img :src="response.img" @error="errImg">
...
methods:
errImg(event) {
event.target.src = 'no_image.jpg' // static/no_image.jpg に正しく表示できる画像ファイルがある
}
このやり方だと。。。
404 エラーの時に、error が発火しない。
-
response.img=存在しない画像
の場合、no_mage.jpg が表示されました -
http://example.com/test.jpg
の場合には何も表示されませんでした-
errImg()
に、console.log()
を仕込んだけど何も出力されませんでした
-
解決策
page2.vue
<v-img :src="showImage(response)" @error="errorImage">
...
data() {
return {
isImgFailed: false
}
},
methods:
showImage(response) {
return this.isImgFailed ? 'no_image.jpg' : response.img
},
onImgError() {
this.isImgFailed = true
}
参考:https://stackoverflow.com/questions/53215071/how-to-do-a-fallback-img-in-v-img-in-vuetify