일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Interface
- Number
- 뷰
- 데이터 타입
- const
- typescript
- null
- 타입스크립트
- 모던
- 투두리스트
- 함수
- let
- js
- 컴포넌트
- VUE
- redux
- var
- this
- ES6
- function
- 객체
- CSS
- 모던 자바스크립트
- 자바스크립트
- 스코프
- 리액트
- todolist
- BIND
- 라우터
- react
- Today
- Total
홍준혁
Vue.js-폼 입력 바인딩 본문
위 사이트를 보면 입력을 하면 다른 곳에 그 내용이 표시되는 기능이 구현되어 있다.
이번 시간에 폼 입력 바인딩을 배우고 나면 저런 기능을 구현할 수 있는 능력이 생길 것이다.
<!DOCTYPE html>
<html>
<head>
<title>Vue.js Sample</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-bind:value="text" /><br />
{{ text }}
</div>
<script>
new Vue({
el: "#app",
data: {
text: "Hello",
},
methods: {},
});
</script>
</body>
</html>
기능 구현에 앞서, input value에 text값을 넣어주고 밑에 text값을 넣어주고 input에 값이 바뀌면 실시간으로 text값이 바뀌는 방식이다.
이전 시간에 배운 키 이벤트를 사용해보면 쉽게 기능을 구현할 수 있다.
keyup이라는 이벤트는 키보드가 누르고 올라갈 때를 의미하는데 이것을 사용해보겠다.
<!DOCTYPE html>
<html>
<head>
<title>Vue.js Sample</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<input
type="text"
v-bind:value="text"
v-on:keyup="handleChange"
/><br />
{{ text }}
</div>
<script>
new Vue({
el: "#app",
data: {
text: "Hello",
},
methods: {
handleChange(event) {
console.log(event);
},
},
});
</script>
</body>
</html>
이런 식으로 하면 input에 입력을 할 때마다 console창에 이벤트가 뜰 것이다.
이때 우리는 이 이벤트를 가지고 이 이벤트의 값을 가져올 수 있는데
그럴 때 console.log에서 event.target.value를 해보자
그러면 결과는
이런 결과가 나올 것이다.
input창에 변화가 있을 때마다 console창에서 변화한 내용이 무엇인지를 출력해주고 있는 것이다.
이제 text값에 event.target.value의 값을 업데이트시켜주면 되는 것이다.
<!DOCTYPE html>
<html>
<head>
<title>Vue.js Sample</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<input
type="text"
v-bind:value="text"
v-on:keyup="handleChange"
/><br />
{{ text }}
</div>
<script>
new Vue({
el: "#app",
data: {
text: "",
},
methods: {
handleChange(event) {
this.text = event.target.value;
},
},
});
</script>
</body>
</html>
이렇게 하면 input에 값을 변경할 때마다 밑에 {{ text }}에서 값이 변하는 모습을 볼 수 있을 것이다.
하지만!!
뭔가 코드가 길어 보이고 별로다 그래서 Vue에서는 정말 간략하게 정~말 간략하게 줄일 수 있는 v-model이라는 것을 지원한다.
그렇게 해서 작성한 코드는...
<!DOCTYPE html>
<html>
<head>
<title>Vue.js Sample</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="text" /><br />
{{ text }}
</div>
<script>
new Vue({
el: "#app",
data: {
text: "",
},
});
</script>
</body>
</html>
진짜 엄청 쉽고 간결하게 해결이 됐다. 이래서 Vue 쓴다
오늘은 여기까지 하고 다음부터는 computed속성을 배워보도록 하겠습니다.
감사합니다
'Vue.js' 카테고리의 다른 글
Vue.js-watch속성 (1) | 2020.09.14 |
---|---|
Vue.js-computed (1) | 2020.09.14 |
Vue.js-이벤트 (0) | 2020.09.14 |
Vue.js-데이터 바인딩 (0) | 2020.09.13 |
Vue.js-톺아보기 (2) | 2020.09.11 |