이안의 평일코딩

[Vue] Vue의 기초(2) - 데이터 바인딩, 반복문 본문

Front-end/Vue

[Vue] Vue의 기초(2) - 데이터 바인딩, 반복문

이안92 2021. 4. 7. 16:17
반응형

 데이터 바인딩

 

데이터 바인딩은 Vue의 실시간 자동 렌더링이 가능하게 해준다.

object 자료로 데이터를 저장해준다. { 데이터명 : 데이터값 }

{{ 데이터명 }}를 넣어주면 값을 불러와준다.

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <div>
    <h4>아이폰12 프로</h4>
    <p>{{ price1 }} 만원</p>
  </div>
  <div>
    <h4>아이폰12 미니</h4>
    <p>{{ price2 }} 만원</p>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {
      price1 : 130,
      price2 : 100,
    }
  },
  components: {
    
  }
}
</script>

 

 속성

 

속성을 데이터바인딩 해줄 때는 : 를 넣어준다.

:속성 = "데이터명" (아래의 예시에서 :style="style1"으로 쓰였다)

<template>
  <img alt="Vue logo" src="./assets/logo.png">
  <div>
    <h4 :style="style1">아이폰12 프로</h4>
    <p>{{ price1 }} 만원</p>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {
      price1 : 130,
      style1 : 'color : blue',
    }
  },
  components: {
    
  }
}
</script>

 

HTML 태그안의 내용을 데이터바인딩 할때는 {{데이터명}}을 넣어주고 속성을 데이터바인딩 할 때는 :속성="데이터명"을 넣는다. 즉 아래의 코드에서 위는 틀리고 이미지 속성을 가져올 때는 :src=""를 사용해야 데이터바인딩이 된다.

<img src={{oneroom[0].image}}> // X
<img :src="oneroom[0].image"> // O

 

 

 반복문

 

<태그 v-for="작명 in 반복횟수" :key="작명">

반복횟수에 숫자 대신 array/object를 넣으면 자료안의 데이터 갯수만큼 반복된다.

작명한 변수는 데이터안의 자료가 된다.

:key=""는 반복문 돌린 요소를 컴퓨터가 구분하기 위해 반복문 쓸 때 꼭 써야한다.

<a v-for="(a,i) in menus" :key="i"> {{ a }} </a> // Home, Shop, About
<a v-for="(a,i) in menus" :key="i"> {{ i }} </a> // 1, 2, 3

(a,i) 왼쪽 변수 a는 array내의 데이터, 오른쪽 변수 i는 1씩 증가하는 정수이다.

 

<template>
  <div class="menu">
    <a v-for="i in menus" :key="i">{{i}}</a>
  </div>
  <br>
  <div v-for="(a, i) in products" :key="i">
    <h4>{{products[i]}}</h4>
    <p>{{price[i]}}만원</p>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {
      count : 0,
      menus : ['Home', 'About', 'Login'],
      products : ['아이폰12프로', '아이폰12', '아이폰12미니'],
      price : ['130', '110', '90'],
    }
  },
  components: {
    
  }
}
</script>

<style>
.menu {
  background: darkslateblue;
  padding: 15px;
  border-radius: 5px;
}

.menu a {
  color: white;
  padding: 10px;
}
</style>

 

반응형
Comments