728x90
λ°μν
π‘ μ€μ΅ ν¬μΈνΈ!
- μ΄μ 1~36 μ¬μ΄μ μ«μλ₯Ό μ λ ₯νλ©΄, ν΄λΉ κ°μ μμ λ§λ κΈμ‘μ μλμΌλ‘ κ³μ°νμ¬ νμν΄μ€λ€.
- μμ΄λ νκΈμ΄λ λ¬Έμλ₯Ό ν κ°λΌλ μ λ ₯ν κ²½μ°, μλ¨μ "μ«μλ§ μ λ ₯νμΈμ." λΌλ μλ¦Όμ°½μ λμμ€λ€.
- μ λ ₯ν κ°μ μκ° 1λ³΄λ€ μμΌλ©΄ "μ΅μ 1κ°μλΆν° μ ν κ°λ₯ν©λλ€." λΌλ μλ¦Όμ°½μ λμ΄ ν months λ₯Ό λ€μ μ λ ₯ν μ μκ² κ³΅λμΌλ‘ λ°κΏμ£Όκ³ , μ λ ₯ν κ°μ μκ° 36κ°μλ³΄λ€ ν¬λ©΄ "μ΅λ 36κ°μκΉμ§ μ ν κ°λ₯ν©λλ€." λΌλ μλ¦Όμ°½μ λμ΄ ν months κ°μ 36κ°μλ‘ λ°κΎΈμ΄μ€λ€.
π λ€μ΄κ°κΈ° μ μ
- μ¬μ©μκ° <input> μ μ λ ₯νλ λ°μ΄ν°λ 무쑰건 String νμ μ λ¬Έμμ΄μ ν΄λΉνλ€.
- μ¦, μ¬μ©μκ° 123 μ μ λ ₯νλ€κ³ ν΄λ μ μ₯λλ κ°μ '123' μ΄ λλ κ²μ΄λ€.
- λ§μ½ λ¬Έμμ΄μ κ°μ λ‘ μ«μλ‘ λ°κΎΈμ΄μ λ°μ΄ν°λ‘ μ μ₯νκ³ μΆμΌλ©΄ v-model.number="λ°μ΄ν°μ΄λ¦" κ³Ό κ°μ΄ v-model μ .number λ₯Ό λΆμ¬μ£Όλ©΄ λλ€.
- λ€λ§, μ΄ λ°©λ²μ <input> μ λ¬Έμμ΄μ΄ μ λ ₯λλ κ² μ체λ₯Ό λ§μ μλ μμΌλ―λ‘, μ΄λ₯Ό λ§κ³ μΆλ€λ©΄ watcher λ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
π watcher μ¬μ©νκΈ°
π€ watcher μμ보기
<script>
export default {
data(){
return {
}
},
watch: {
// μ¬κΈ°μ watcher λ₯Ό μ¬μ©ν λ°μ΄ν°λ₯Ό μ μ΄μ£Όλ©΄ λλ€.
},
}
</script>
- watcher λ <script><script> λ΄μ watch : { } λΌλ νλͺ©μ μλ‘ λ§λ€μ΄μ μμ±ν΄μ£Όλ©΄ λλ€.
- νΉμ λ°μ΄ν°κ° λ³κ²½λ λλ§λ€ μ€νλ μ½λλ₯Ό μ¬κΈ°μ μμ±ν΄λμΌλ©΄, watcher κ° ν΄λΉ λ°μ΄ν°μ λ³κ²½μ΄ λ°μν λλ§λ€ κ°μ§νμ¬ μ¬κΈ°μ κΈ°μ¬λ μ½λκ° μ€νλλ€.
export default {
name: 'Modal',
data(){
return {
months : ""
}
},
watch : {
months(){
// months κ° λ³κ²½λ λ μ€νν μ½λ
}
}
}
- μ΄μ watch : { } μμ ν¨μλ₯Ό μ§μ΄λ£μ μ μλλ°, ν¨μλͺ μ λ΄κ° watcher λ₯Ό μ¬μ©νκ³ μ νλ λ°μ΄ν° μ΄λ¦μΌλ‘ μμ±ν΄μ£Όμ΄μΌ νλ€.
- μλ₯Ό λ€μ΄, λλ κ·Έ μ μ data 보κ΄ν¨μ λ§λ€μ΄λ months λΌλ λ°μ΄ν°μ watcher λ₯Ό μ¬μ©νμ¬ λ°μ΄ν° λ³κ²½μ κ°μ§νκ³ μΆλ€κ³ νλ€λ©΄ ν¨μμ μ΄λ¦μ months κ° λλ κ²μ΄λ€.
- κ·Έλ¦¬κ³ ν¨μ μμλ months κ° λ³κ²½λ λλ§λ€ μ€νν μ½λλ₯Ό μμ±ν΄μ£Όλ©΄ λλ€.
- ν¨μμλ νλΌλ―Έν°λ₯Ό λ°μμ¬ μ μλλ°, 첫λ²μ§Έλ‘ λ°μμ€λ νλΌλ―Έν°λ λ³κ²½λ κ°, λλ²μ§Έλ‘ λ°μμ€λ νλΌλ―Έν°λ λ³κ²½μ κ°μ μλ―Ένλ©° μ΅λ 2κ°κΉμ§ λ°μμ¬ μ μλ€.
π€ watcher μ¬μ©ν΄λ³΄κΈ°
// μ 체 μ½λ 미리보기
// μ 체 μ½λ λ΄μ©μ΄ κΈΈμ΄ λΆνμν λΆλΆμ μ μΈνλ€.
<template>
<input @input="changeKeyword" :value="months">
<p>{{months}}κ°μ μ ν: {{ rooms[clickedRoom].price * months }}μ</p>
</template>
<script>
export default {
name: 'Modal',
data(){
return {
months : "",
}
},
watch: {
months(input){
if (isNaN(input) === true){
alert('μ«μλ§ μ
λ ₯νμΈμ.');
this.months = "";
}
if (input > 36){
alert('μ΅λ 36κ°μκΉμ§ μ ν κ°λ₯ν©λλ€.');
this.months = 36;
} else if (input < 1) {
alert('μ΅μ 1κ°μλΆν° μ ν κ°λ₯ν©λλ€.');
this.months = "";
}
}
},
methods: {
changeKeyword(e){
this.months = e.target.value;
},
}
}
</script>
- μ μ΄μ λλ μ«μλ§ μ λ ₯λ°κ³ μΆμκΈ° λλ¬Έμ, μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ κ΅¬κΈλ§μ λ§μ΄ ν΄λ³΄μλ€.
- λ¬Έμκ° μ λ ₯λλ κ²½μ°μ μλ¦Όμ°½μ λμ°κ³ μ λ ₯λ κ°μ μ΄κΈ°ννκ³ μ νμλλ° v-model μ μ¬μ©νμ λ λκ° μ΄μνκ² μλνλ κ² κ°μ ꡬκΈλ§μ ν΄λ³΄μλ€.
- ꡬκΈλ§ν κ²°κ³Ό, v-model μ μ¬μ©νμ λ μ λ ₯ν λ¬Έμκ° μμ΄λΌλ©΄ μ μμ μΌλ‘ μλ°©ν λ°μΈλ©μ΄ λμ΄ μμ΄ λ°λ‘λ°λ‘ μλ¦Όμ°½μ΄ μ λλ‘ λ¨μ§λ§, νκΈμ μ λ ₯νλ κ²½μ°μλ μμκ³Ό λͺ¨μμ΄ μ‘°ν©λμ§ μμ μνμμλ λ°μΈλ©μ΄ λμ§ μμ μλ¦Όμ°½μ΄ μ λλ‘ λ¨μ§ μλ λ¬Έμ κ° λ°μνλ€λ μ¬μ€μ μμλλ€.
- λ°λΌμ, μ΄λ° μ‘°ν©μ΄ νμν μΈμ΄λ€μ v-model directive λ₯Ό νμ©ν λ λ¬Έμ κ° μκΈ°λ―λ‘, @input μ νμ©ν΄μΌ νλ€λ κ²μ΄λ€.
- κ·Έλμ v-model λμ @input μ μ¬μ©νμ¬ μλ°©ν₯ λ°μΈλ©μ΄ μ ννκ² λλλ‘ν΄μ£Όμλ€.
- κ·Έ λ€μμ, <input> μ μ λ ₯λ°μ κ°μ΄ μ«μκ° μλλΌλ©΄ "μ«μλ§ μ λ ₯νμΈμ." λΌλ μλ¦Όμ°½μ΄ λ¨λ©° μ λ ₯κ°μ΄ 곡λμΌλ‘ μ΄κΈ°νλλλ‘ ν΄μ£Όμκ³ , μ λ ₯λ°λ μ«μλ 1~36κΉμ§λ§ κ°λ₯νλλ‘ νμ¬ ν΄λΉ λ²μλ₯Ό λ²μ΄λλ©΄ κ·Έμ μλ§λ μλ¦Όμ°½κ³Ό ν¨κ» λ΄κ° μ§μ νλλ‘ κ°μ μ΄κΈ°ννλλ‘ ν΄μ£Όμλ€.
π μ°Έκ³ ν λΈλ‘κ·Έ λ° μλ£
- βpygmalion0220 λμ tistory λΈλ‘κ·Έ: [Vue] inputμ μ«μλ§ μ λ ₯ κ°λ₯νκ² νκΈ°
- input type number accepts e character
- webruden λμ tistory λΈλ‘κ·Έ: Vue.js v-model νκΈ μ¬μ© λ¬Έμ μ΄κ°λ¨ ν΄κ²° λ°©λ²
728x90
λ°μν
'[κ°λ°] Practice > Vue.js' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Vue.js] λ°μ΄ν° μλ³Έ 보쑴μ νμμ± μ΄ν΄νκΈ° λ° μν μ λ ¬ κΈ°λ₯ λ§λ€κΈ° (0) | 2022.04.04 |
---|---|
[Vue.js] Vue μμ UI μ λλ©μ΄μ ν¨κ³Ό μ£ΌκΈ° (0) | 2022.04.03 |
[Vue.js] μ¬μ©μμ input λ°μμ€κΈ° (0) | 2022.04.03 |
[Vue.js] Component λ§λ€κΈ° (0) | 2022.04.02 |
[Vue.js] λͺ¨λ¬μ°½ λ΄μ μμΈ νμ΄μ§ λ§λ€κΈ° (0) | 2022.04.01 |