0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

imgのファイル指定をv-bindでする時

Posted at

Vue.jsでimgタグのsrc指定を変数で行う場合、そのままだと使えないので注意

TL;DR

require()を使用する

やってみる

※この例ではNuxtも使用しています

そのまま変数を置いてみる

<template>
  <img :src="pass">
</template>

<script>
export default {
  data() {
    return {
      pass: '~/assets/test-img.png'
    }
  }
}
</script>

なんとなくいけるような気はするが、結果は 404エラー となってしまいます。
どうやら、相対パスを表す ~ 部分が、 そのまま文字列として 読み込まれてしまっている模様。(たぶん)

モジュールとして読ませる

そこで、 require() を利用する。

<template>
  <img :src="pass">
</template>

<script>
export default {
  data() {
    return {
      pass: require('~/assets/test-img.png')
    }
  }
}
</script>

これで晴れて表示させることができます!(表示例がないのでわかりにくいですが...)

(おまけ)static配下の画像の場合

指定したい画像がstatic配下だと、require使わずとも表示させることができます。

<template>
  <img :src="pass">
</template>

<script>
export default {
  data() {
    return {
      pass: 'test-img.png'
    }
  }
}
</script>

template内で直接指定する場合、
~/static/test-img.pngtest-img.png と書くことで、自動でstatic配下に補完してくれるようです。
相対パスの記述がないので、変数で文字列として読ませても、うまく作動するようです。

便利〜〜〜

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?