QInput ์์ ํ๊ธ ์ ๋ ฅ ๋ฐ์์ด ๋๋ฆฐ ๊ฒฝ์ฐ
Quasar ํ๋ ์์ํฌ์ QInput ์ปดํฌ๋ํธ๋ก ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ฐ์ ๋ ํ๊ธ์ด๋ ์ผ๋ณธ์ด์ ๊ฐ์ด ์ ๋ ฅ๋ ๊ธ์๋ฅผ ์กฐํฉํด์ ๋ณํํด์ผํ๋ IME Composition ์ผ๋ก ์ธํด ์ํฐํค ๋๋ ํฌ์ปค์ค๊ฐ ํด์ ๋์ด์ผ ์ ์์ ์ผ๋ก ๋ฐ์๋๋ ๋๋ ์ด ๋ฌธ์ ๊ฐ ์๋ค. ์ด ๋ฌธ์ ๋ฅผ ๋ฒ์ด๋๊ธฐ ์ํด ๋๊ฐ์ง์ ํธ๋ฆญ์ ์ด์ฉํด๋ณผ ์ ์๋ค.
์ฒซ๋ฒ์งธ ๋ ์จ - Template Refs
<template>
<q-input ref="input" v-model="text" />
</template>
<script setup lang="ts">
import {ref, onMounted} from "vue";
const text = ref('')
const input = ref(null)
onMounted(() => {
input.value.$el.addEventListener('input', (e) => text.value = e.target.value)
})
</script>
Quasar ์์ ์ ๊ณตํ๋ QInput ์ปดํฌ๋ํธ์์๋ @Input ์ด๋ฒคํธ๋ฅผ ์ง์ํ์ง ์์ผ๋ฏ๋ก Template Refs๋ฅผ ์ฌ์ฉํ๋ฉด DOM ์๋ฆฌ๋ฉํธ(el)๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฏ๋ก input ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์๋์ผ๋ก ๋ฑ๋กํด์ ์ ๋ ฅ๋ ๊ฐ์ ์ฆ์ ๋ฐ์ํ ์ ์๋ค.
๋๋ฒ์งธ ๋ ์จ - Field ์ปดํฌ๋ํธ
<template>
<q-field v-model="text">
<template v-slot:control>
<input :value="text" @input="e => text = e.target.value"/>
</template>
</q-field>
</template>
๋ง์ฝ, QInput ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผํ๋๊ฒ ์๋๋ผ๋ฉด Quasar ์์ ์ถ๊ฐ์ ์ผ๋ก ์ ๊ณตํ๊ณ ์๋ QField ์ปดํฌ๋ํธ์ Control types ์ ์ด์ฉํ์ฌ ๋ค์ดํฐ๋ธ input ์๋ฆฌ๋ฉํธ๋ฅผ ์ง์ ์ฌ์ฉํด์ @Input ์ด๋ฒคํธ๋ฅผ ์ ์ฉํ ์ ์๋ค. QInput ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋ณด๋ค ๊ฒ์ ์ปดํฌ๋ํธ๋ฅผ ์ง์ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ๊ฒ๋ ๋์์ง ์๋ค.