컴포넌트 작성 시 자식컴포넌트와 부모컴포넌트의 데이터를 양방향으로 구성
하는 경우가 종종 있다.
방법은 몇가지 있지만, 원리는 같으며, v-model
속성을 연동하는 방법에 대한 팁
으로 보면 좋을 거 같다.
해당 예제는 vue 2.x
에 적용된다.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div id="app"> 부모의 데이터: <input type="text" v-model="doggie" /> <dog-component v-model="doggie"></dog-component> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script> <style> </style> <script type="text/javascript"> const dogComponent = { template: ` <div> 자식의 데이터: <input type="text" v-model="왈왈" /> </div> `, props: ['value'], computed: { '왈왈': { get() { return this.value; }, set(val) { this.$emit('input', val); } } } }; new Vue({ el: '#app', components: { 'dog-component': dogComponent }, data() { return { doggie: '안녕하세요? 도지입니다.' } } }) </script> </body> </html>
위와같이 왈왈
속성을 computed 와 get, set
을 통해서, input
이벤트 때에 부모에게 값을 전달해 주는 형태 이다.
'프레임워크.라이브러리 > vue' 카테고리의 다른 글
Vue 컴포넌트 데이터 연동 정리 (0) | 2022.08.25 |
---|