# κ²°ν©λ ₯ λμ μ»΄ν¬λνΈ
λ λ²μ§Έ μ»΄ν¬λνΈ λμμΈ ν¨ν΄μ ν΅μ¬μ v-model λλ ν°λΈμ λλ€. v-modelμ λ΄λΆκ° μ΄λ»κ² λμνλμ§ μ΄ν΄νκ³ μ΄λ₯Ό μμ©νμ¬ μ’ λ κ²°ν©λ ₯μ΄ λμ μ»΄ν¬λνΈλ₯Ό λ§λ€μ΄λ³΄κ² μ΅λλ€.
# v-model λλ ν°λΈ
v-model λλ ν°λΈλ μλ°©ν₯ λ°μ΄ν° λ°μΈλ©μ μ§μνλ μμ±μ λλ€. μλ°©ν₯ λ°μ΄ν° λ°μΈλ©μ΄λ νλ©΄μ λ°μ΄ν°μ λ·° μΈμ€ν΄μ€μ λ°μ΄ν°κ° νμ μΌμΉνλ κ²μ μλ―Έν©λλ€. μ½λλ₯Ό λ³΄κ² μ΅λλ€.
<template>
<input type="text" v-model="inputText">
</template>
<script>
export default {
data() {
return {
inputText: 'hi'
}
}
}
</script>
μ μ½λλ₯Ό μ€ννλ©΄ μΈν λ°μ€μ μ΄κΈ° κ°μΌλ‘ 'hi'κ° μ§μ λμ΄ μμ΅λλ€. κ·Έλ¦¬κ³ μΈν λ°μ€μ λ΄μ©μ λ°κΎΈλ©΄ inputTextμ κ°λ κ°μ΄ λ°λλλ€. ν΄λΉ λ΄μ©μ λ·° κ°λ°μ λꡬμμ νμΈν μ μμ΅λλ€.
# v-model λλ ν°λΈμ λμ λ°©μ
κ·ΈλΌ μμμ v-model λλ ν°λΈκ° μ΄λ»κ² λ·° μΈμ€ν΄μ€μ λ°μ΄ν°μ μ 보λ₯Ό μ£Όκ³ λ°μμκΉμ? v-model λλ ν°λΈμ λ΄λΆλ μλμ κ°μ κ΅¬μ‘°λ‘ λμν©λλ€.
<template>
<input type="text" :value="inputText" @input="inputText = $event.target.value">
</template>
<script>
export default {
data() {
return {
inputText: 'hi'
}
}
}
</script>
inputText
μ κ°μ :value
μ μ°κ²°νκ³ μΈν λ°μ€μ μ
λ ₯μ λͺ¨λ $event.target.value
λ‘ inputText
μ λ£μ΅λλ€. μμ μ½λλ v-model λλ ν°λΈμ λμΌνκ² λμν©λλ€.
TIP
μμ κ°μ μ½λλ 컀μ€ν λλ ν°λΈλ₯Ό μμ±ν λ λ§μ΄ μ¬μ©λ©λλ€.
# v-modelλ‘ μ²΄ν¬ λ°μ€ μ»΄ν¬λνΈ λ§λ€κΈ°
μμμ μ΄ν΄λ³Έ v-modelλ‘ HTML μΈν μ²΄ν¬ λ°μ€λ₯Ό μ»΄ν¬λνΈν ν΄λ³΄κ² μ΅λλ€. λ¨Όμ μμ μ»΄ν¬λνΈμΈ App.vueμ μ½λμ λλ€.
<!-- App.vue -->
<template>
<check-box v-model="checked"></check-box>
</template>
<script>
import CheckBox from './CheckBox.vue';
export default {
components: {
CheckBox
},
data() {
return {
checked: false,
}
}
}
</script>
μ΄μ΄μ νμ μ»΄ν¬λνΈλ‘ λ±λ‘λ CheckBox.vueμ μ½λλ₯Ό λ³΄κ² μ΅λλ€.
<!-- CheckBox.vue -->
<template>
<input type="checkbox" :value="value" @click="toggle">
</template>
<script>
export default {
props: ['value'],
methods: {
toggle() {
this.$emit('input', !this.value);
}
}
}
</script>
μ μ½λλ₯Ό μ€ννμ¬ μ²΄ν¬ λ°μ€λ₯Ό ν΄λ¦νλ©΄ checked
κ°μ΄ μ μμ μΌλ‘ trueμμ falseλ‘ μ νλλ κ²μ νμΈν μ μμ΅λλ€.
β Common Approach Component with Slots β