๐Ÿ“• Language/Vue

[Vuejs] <input> ํƒœ๊ทธ์— ์ž…๋ ฅํ•œ ์ „/ํ›„ value ๋ฐ›์•„์˜ค๊ธฐ (Vuejs get old value when on change event)

a n u e 2023. 7. 13. 13:05

 

 

input ๋ฐ•์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ๊ธฐ์กด ๊ฐ’๊ณผ ์ƒˆ๋กญ๊ฒŒ ์ž…๋ ฅํ•œ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ์•ผํ•˜๋Š” ๊ฒฝ์šฐ

 

์ฒ˜์Œ์—” ํ•˜๋‹จ๊ณผ ๊ฐ™์ด v-model์— ๊ฑธ์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์…‹ํŒ…ํ•œ ํ›„, @input ์ด๋ฒคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ›์•„์˜ค๋ ค๊ณ  ํ–ˆ์œผ๋‚˜

๊ณ„์†ํ•ด์„œ new ๊ฐ’๋งŒ ๋ฐ›์•„์˜ฌ ๋ฟ, old ๊ฐ’์€ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜๋‹ค.

 

 

๊ธฐ์กด์ฝ”๋“œ

<template v-for=(data, index) in table.data) :key=index>
  <tr>
    <td><input v-model="data.field1" @input="changeValue($event, data)"></input></td>
   </tr>
</template>

 

ํ•ด๊ฒฐ

 v-model ๋Œ€์‹ , :value๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์…‹ํŒ…ํ•ด์ค€ ํ›„, @change ์ด๋ฒคํŠธ๋ฅผ ๊ฑธ์–ด ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 input ์—˜๋ฆฌ๋จผํŠธ์—์„œ v-model์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๋ฉฐ ์ž…๋ ฅ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์–‘๋ฐฉํ–ฅ ๋ชจ๋ธ ๋ฐ”์ธ๋”ฉ์ด ๋ฐ”๋กœ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, :value(v-bind)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— $event๋ฅผ ๊ฑธ์–ด target value๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„, ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋”ฐ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 v-model = v-bind:value + v-on:input

<template v-for=(data, index) in table.data) :key=index>
  <tr>
    <td><input v-model="data.field1" :value="data.field1" @change="changeValue(data, $event)"></input></td>
   </tr>
</template>

 

๋‚˜์˜ ๊ฒฝ์šฐ old, new data๊ฐ€ ๋‹ค๋ฅผ ๋•Œ, ๊ธ€์ž ์ƒ‰์„ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผํ–ˆ๋‹ค.

 const changeValue = (item, event) => {
  console.log(item.field1) //old data
  console.log(event.target.value) //new data
  item.field1 !== event.target.value ? (event.target.style.color = 'red') : (event.target.style.color = 'black');
 }

 

 


+ ๋ฌธ์ œ์ 

  v-model๋„ ํ•จ๊ป˜ ๊ฑธ์–ด๋ฒ„๋ฆฌ๋‹ˆ vue compile error๊ฐ€ ๋–จ์–ด์ง„๋‹ค. v-model๋„ ๊ฑธ์–ด์•ผํ•˜๋Š”๋ฐ ์–ด๋–กํ•˜์ง€? ํ