폼 입력 바인딩
단반향 데이터 바인딩(연결)했다.
v-model
<template>
<h1>{{ msg }}</h1>
<input
type="text"
v-model="msg" />
<!-- 양방향 바인딩 v-model -->
<h1>{{ checked }}</h1>
<input
type="checkbox"
v-model="checked" />
</template>
<script>
export default {
data() {
return {
msg:'Hello world!',
checked:false
}
},
// methods: {
// handler(event){
// console.log(event.target.value)
// this.msg=event.target.value
// }
// }
}
</script>
한글을 입력하면 한박자 늦게 결과가 반영된다.
<template>
<h1>{{ msg }}</h1>
<input
type="text"
:value="msg"
@input="msg = $event.target.value" />
<!-- 양방향 바인딩 v-model -->
<h1>{{ checked }}</h1>
<input
type="checkbox"
v-model="checked" />
</template>
이렇게 작성하면 한글도 바로 반영될 수 있다.
v-model 수식어
@change
<template>
<h1> {{ msg }}</h1>
<input
type="text"
:value="msg"
@change="msg = $event.target.value" />
<!-- chagne는 바로 반영되지 않고 tap, enter, input 밖에 클릭을 하면 반영된다. -->
</template>
<script>
export default {
data() {
return {
msg: 'Hello world!'
}
},
}
</script>
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
<template>
<h1> {{ msg }}</h1>
<input
type="text"
v-model.lazy="msg" />
<!-- chagne는 바로 반영되지 않고 tap, enter, input 밖에 클릭을 하면 반영된다. -->
</template>
<script>
export default {
data() {
return {
msg: 'Hello world!'
}
},
}
</script>
입력이 완료하고 반영
<template>
<h1> {{ msg }}</h1>
<input
type="text"
v-model.number="msg" />
<!-- 입력하는 데이터가 지속적으로 숫자 데이터면 .number을 사용할 수 있다. -->
</template>
<script>
export default {
data() {
return {
msg: 123
}
},
watch:{
msg(){
console.log(typeof this.msg)
}
}
}
</script>
.number
<template>
<h1> {{ msg }}</h1>
<input
type="text"
v-model.trim="msg" />
<!-- trim은 띄어쓰기를 앞뒤로 삭제한다. -->
</template>
<script>
export default {
data() {
return {
msg: 'Hello world!'
}
},
watch:{
msg(){
console.log(this.msg) //띄어쓰기 제거 .trim()
}
}
}
</script>
.trim
'vue.js' 카테고리의 다른 글
vue3 문법 [컴포지션API] (0) | 2021.11.08 |
---|---|
vue 문법 [컴포넌트] (0) | 2021.11.08 |
vue3 문법 [이벤트 핸들링] (0) | 2021.11.07 |
vue3 문법[클래스와 스타일 바인딩, 조건부 렌더링, 리스트 렌더링] (0) | 2021.11.07 |
vue3 문법[computed,Getter,Setter,Watch] (0) | 2021.11.06 |