Jun Dolor
Jun Dolor

Reputation: 639

How do I reference an image path in an img src in Vue JS

I have an array of objects coming from a prop. Each object has a title and img key values. I'm using v-for to display the title and how the image from the img value.

    <div v-for="item in products" :key="item.id">
      <h1>{{item title}}</h1>
      <img :src="item.img">
    </div>

    export default {
      name: "home",
      props: ["products"]
      /*
      here is the products
      [{id: 1, title: "Moe", img: "../assets/images/stooges/moe.jpg"},
      {id: 2, title: "Larry", img: "../assets/images/stooges/larry.jpg"},
      {id: 3, title: "Curly", img: "@/assets/images/stooges/curly.jpg"}]
      */
    };

On the last element, I'm trying the relative referencing. I've also tried something like this

<img :src="require(item.img)">

At least for the last element, I was hoping to see the image.

Upvotes: 2

Views: 3394

Answers (1)

larrykkk
larrykkk

Reputation: 519

    <div v-for="item in products" :key="item.id">
      <h1>{{ item.title }}</h1>
      <img :src="require(`@/assets/images/stooges/${item.img}.jpg`)" />
    </div>

    export default {
      name: "home",
      props: ["products"]
      data() {
        return {
          products: [
            [{id: 1, title: "Moe", img: "moe"},
             {id: 2, title: "Larry", img: "larry"},
             {id: 3, title: "Curly", img: "curly"}]
          ]
        };
      },
    };

Upvotes: 4

Related Questions