728x90
Labels first
parent 에서 component 내부로 label 을 넘겨주기 위하여 label 을 prop 로 component 에 추가 한다
Making it v-model capable
- 체크박스 입력은 해당 상태를 값에 직접 바인딩하는 것이 아니라 체크된 속성에 바인딩한다. 체크박스의 값이라고 하는 속성은 일반적으로 프런트엔드에서 사용되지 않는다.
- checkbox type 의 <input>은 input 이벤트를 트리거하지 않고, selected 및 unselected 될 때마다 change event 를 trigger 합니다.
- parent component 에게 checkbox 가 전환되었음을 알리고 싶을 때마다 update:modelValue를 내보낼 필요가 있다, 이를 위해서는 입력 element 에서 @change 이벤트를 듣고 있다가, change event 가 fire 될때마다 요소의 새로운 확인된 상태를 emit 하게 된다
BaseCheckbox.vue
<template>
<input
type="checkbox"
:checked="modelValue"
@change="$emit('update:modelValue', $event.target.checked)"
class="field"
/>
<label v-if="label">{{ label }}</label>
</template>
<script>
export default {
props: {
label: {
type: String,
default: ''
},
modelValue: {
type: Boolean,
default: false
}
}
}
</script>
Notice that for checkboxes we are not emitting the target’s value through $event.target.value, but instead the checked status through $event.target.checked.
Using our new component
SimpleForm.vue
<h3>Extras</h3>
<div>
<BaseCheckbox
v-model="event.extras.catering"
label="Catering"
/>
</div>
<div>
<BaseCheckbox
v-model="event.extras.music"
label="Live music"
/>
</div>
https://github.com/pidokige02/Vue-3-Form-demo
GitHub - pidokige02/Vue-3-Form-demo
Contribute to pidokige02/Vue-3-Form-demo development by creating an account on GitHub.
github.com
'Java Scripts > Vue.js' 카테고리의 다른 글
Vue 3 Forms : BaseRadio - BaseRadioGroup (0) | 2021.12.27 |
---|---|
Vue 3 : What is lint? (0) | 2021.12.27 |
Vue 3 Forms : Auto-importing components (0) | 2021.12.27 |
Vue 3 Forms - Base Select (0) | 2021.12.27 |
Vue 3 Forms - Base Input (0) | 2021.12.26 |