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 ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค ๊ฒ€์ƒ‰ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๋‚˜์˜์ง€ ์•Š๋‹ค.