기존 자바스크립트 데이터바인딩 방식
document.getElementById().innerHTML = ??
{{}} : JS 데이터를 HTML에 꽂아 넣기 가능
1. 데이터 보관함에 넣기
object 자료 형태로 데이터 저장 -> {자료이름 : 자료내용}
2. {{ 자료이름 }} 형태로 사용하기
클래스명, 스타일 등의 HTML 속성도 데이터바인딩 가능하다.
var array = [10,20,30]
array[0]으로 10의 값을 사용할 수 있다.
모든 HTML 태그에 넣어서 사용 가능.
Vue의 HTML 반복문 <태그 v-for="작명 in 반복횟수" :key="작명">
data() 활용
array/object 넣기 가능하며, 자료 안의 데이터 갯수만큼 반복하고 작명한 변수는 데이터 안의 자료가 된다.
key
반복문을 쓸 때에 꼭 사용해야 하며, 반복문 돌린 요소를 컴퓨터가 구분하기 위해서 사용한다. 변수 작명이 2개까지 가능한데 왼쪽 변수에는 array 내의 데이터가 들어가고 오른쪽 변수에는 1씩 증가하는 정수가 들어간다.
추가학습)
HTML 클릭 시 코드 실행하는 방법
v-on:click="이름" (축약: @click="이름" )
버튼을 클릭했을 때 데이터 값이 증가하고 이러한 데이터 변화는 HTML에 바로 반영된다.
mouseover
버튼 위에 마우스를 올렸을 때
이벤트 후 처리, 함수로 작성 가능
function 어쩌구(){
console.log("hello")
}
이벤트핸들러에 함수 이름을 넣어서 함수 내의 코드 실행 가능하다.
함수 안에서 데이터를 사용할 때는 this.데이터명 형식이어야 한다.
추가학습)
배열에 숫자를 넣고 해당 숫자에 접근해서 사용하는 것과 동일하다.
v-if="조건식"의 형태로 조건식이 참일 때만 HTML을 보여줄 수 있다.
버튼 생성해서 버튼 클릭 시 변수 값을 변경하여 모달을 닫는다.
<template>
<div class="black-bg" v-if="modalOpen == true">
<div class="white-bg">
<h4>상세페이지</h4>
<p>상세페이지 내용</p>
<button @click="modalOpen = false">닫기</button>
</div>
</div>
<div class="menu">
<a v-for="홈 in 메뉴들" :key="홈">{{ 홈 }}</a>
</div>
<div>
<img src="./assets/room0.jpg" class="room-img">
<h4 @click="modalOpen = true">{{ products[0] }}</h4>
<h4>{{ price1 }} 만원</h4>
<button @click="cnt[0]++">허위매물신고</button> <span>신고수 : {{ cnt[0] }}</span>
</div>
<div>
<img src="./assets/room1.jpg" class="room-img">
<h4 class="red" :style="스타일">{{ products[1] }}</h4>
<h4>{{ price1 }} 만원</h4>
<button @click="cnt[1]++">허위매물신고</button> <span>신고수 : {{ cnt[1] }}</span>
</div>
<div>
<img src="./assets/room2.jpg" class="room-img">
<h4 class="red" :style="스타일">{{ products[2] }}</h4>
<h4>{{ price1 }} 만원</h4>
<button @click="cnt[2]++">허위매물신고</button> <span>신고수 : {{ cnt[2] }}</span>
</div>
</template>
<script>
export default {
name: 'App',
data(){
//데이터 보관함
return{
modalOpen : false,
cnt : [0,0,0],
price1 : 60,
price2 : 70,
스타일 : 'color : blue',
products : ['역삼동원룸', '천호동원룸', '마포구원룸'],
메뉴들 : ['HOME', "SHOP", "ABOUT"]
}
},
methods : {
increase(){
this.cnt += 1;
}
}
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
body{
margin: 0
}
div{
box-sizing: border-box;
}
.black-bg {
width: 100%; height: 100%;
background: rgba(0,0,0,0.5);
position: fixed; padding: 20px;
}
.white-bg{
width: 100%; background: white;
border-radis: 8px; padding: 20px;
}
.room-img{
width: 100%;
margin-top: 40px;
}
.menu{
background: darkslateblue;
padding: 15px;
border-radius: 5px;
}
.menu a {
color: white;
padding: 10px;
}
</style>
다른 파일에 넣고 import해서 사용
export default 변수명
내보내기import 변수명 from 파일경로
사용하기export {변수1, 변수2, .. }
import {변수1, 변수2, ..} from 경로
소중한 정보 잘 봤습니다!