6. two-way data binding
first
๋ฐ์์ฑ์ด๋ data์ ๊ฐ ๋ณ๊ฒฝ์ด ๋ฐ์์ ์ฆ์ ํ์ด์ง์ ๋ฐ์๋๋ ๊ฒ์ ๋ปํ๋ค.
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<div id="app" v-cloak>
<p>{{ fullName() }}</p>
<hr />
<label>First Name</label>
<input type="text" v-model="firstName">
<label>Last Name</label>
<input type="text" v-model="lastName">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/3.4.6/vue.global.prod.min.js"></script>
<script src="app.js"></script>
</body>
</html>
app.js
const vm = Vue.createApp({
data() {
return {
firstName: 'John',
lastName: 'Doe',
}
},
methods: {
fullName() {
return `${this.firstName} ${this.lastName.toUpperCase()}`
}
}
}).mount('#app');
main.css
[v-cloak] {
display: none;
}
const input = document.getElementById('first-name');
input.addEventListener('keyup', function () {
const p = document.querySelector('p');
p.innerText = this.value;
})