본문 바로가기
vue.js

img 태그 바인딩

by 신방동불주먹 2023. 5. 18.

Vue.js에선 element의 속성을 동적으로 처리할 때 v-bind라는 Directive를 사용한다.

일반적인 HTML 태그들의 속성을 바인딩할 경우가 생기는데,

그 대표적인 예로 img 태그의 src 속성이다.

(src는 불러올 이미지의 경로를 지정)

특히 여러 이미지를 for문으로 한 번에 불러올 때 src를 바인딩 해줘야 한다.

 

      <div v-for="data in 원룸" :key="data">
        <img :src="data.image" />
          <h4 @click="modal">{{ data.title }}</h4>
          <p>{{ data.price }} 원</p>
          <button @click="신고수[0] += 1"> 허위매물 신고 </button><br/>
          <span>신고 수 : {{ 신고수[0] }}</span>
      </div>
 

:src 또는 v-bind:src를 써서 binding 해준다.

 

(콜론은 v-bind: 의 sugar syntax. 즉, 축약어)

하지만 위와 같이 하면 이미지가 불러와지지 않는다.

 

 

그 이유는 각 객체의 image에 저장이 되어 있는 것은 단순 String 값이기 때문이다.

-room.js

 export default
[{
  id : 0,
  title: "Sinrim station 30 meters away",
  image: "./assets/1.png",
  content: "18년 신축공사한 남향 원룸 ☀️, 공기청정기 제공",
  price: 340000
  },
  {
  id : 1,
  title: "Changdong Aurora Bedroom(Queen-size)",
  image: "./assets/2.png",
  content: "침실만 따로 있는 공용 셰어하우스입니다. 최대 2인 가능",
  price: 450000
  }]

 

해결하기 위해서는 해당 경로를 import한다는 의미로 require를 사용해야 한다.

 export default
[{
  id : 0,
  title: "Sinrim station 30 meters away",
  image: require("./assets/1.png"),
  content: "18년 신축공사한 남향 원룸 ☀️, 공기청정기 제공",
  price: 340000
  },
  {
  id : 1,
  title: "Changdong Aurora Bedroom(Queen-size)",
  image: require("./assets/2.png"),
  content: "침실만 따로 있는 공용 셰어하우스입니다. 최대 2인 가능",
  price: 450000
  }]

 

 

 

'vue.js' 카테고리의 다른 글

[Vue3/Vite] <v-img>  (0) 2024.01.09
axios String데이터 받기  (0) 2023.06.15
[vue3] ref, reactive  (0) 2023.05.18
element-ui  (0) 2023.04.25
CORS 에러 (vue.js, springboot) / proxy  (0) 2023.04.25