๐Ÿ‘ฉ‍๐Ÿ’ป/Vue

Vue ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ Event prevent : .stop modifier

ํ•œ๋‚˜ 2021. 1. 12. 03:11
<ul class="todo-list">
      <li
        class="todo-list__items"
        v-for="(todo, index) in todos"
        :key="index"
        @click="checkDone(index)"
      >
        <ul class="item-box">
          <li class="detail" :class="{ done: todo.done }">{{ todo.title }}</li>
          <li class="btns">
            <font-awesome-icon icon="edit" class="edit" @click.stop="handleEdit()" />
            <font-awesome-icon
              icon="trash"
              class="delete"
              @click.stop="handleDelete()"
            />
          </li>
        </ul>
      </li>
    </ul>

todo-list ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ์„ ํ•˜๋Š” <ul> ํƒœ๊ทธ๊ฐ€ ์žˆ๊ณ , ์•„๋ž˜์— todo-list item๋“ค์ด v-for ๋ฅผ ๋„๋Š” ํ˜•ํƒœ์ด๋‹ค. ํ•˜๋‚˜์˜ todo ์•„์ดํ…œ์€ todo ํƒ€์ดํ‹€ ์—ญํ• ์„ ํ•˜๋Š” <li> ํƒœ๊ทธ์™€ ๋ฒ„ํŠผ๋ถ€ ์—ญํ• ์„ ํ•˜๋Š” <li> ํƒœ๊ทธ ๋‘˜๋กœ ๋˜ ๋‚˜๋‰˜๋Š”๋ฐ, ์ด๋•Œ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์ธ for ๋ฌธ์˜ <li>์— checkDone()์ด๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ๊ฑธ๋ ค ์žˆ๋‹ค.

 

ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ํด๋ฆญ ์‹œ ์ƒํƒœ๊ฐ’์„ ํ† ๊ธ€ํ•ด์ฃผ์–ด ํ•˜์œ„ ํƒœ๊ทธ์˜ ํด๋ž˜์Šค๋ฅผ ๋ถ™์ด๊ณ  ๋–ผ์–ด์ฃผ๋Š” ์—ญํ• ์„ ๋„์™€์ฃผ๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋ฒ„ํŠผ ๋ถ€๋Š” ๋‹ค๋ฅธ ์ด๋ฒคํŠธ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์˜ event๋ฅผ prevent ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

์ด๋•Œ์—๋Š” ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฒคํŠธ๋ฅผ fireํ•˜์ง€ ๋ง์•„์•ผ ํ• , ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ•จ์ˆ˜์— .stop modifier๋ฅผ ๋ถ™์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์†๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฒ„ํŠผ ๋ถ€๋ฅผ ์ œ์™ธํ•œ <li> ํƒœ๊ทธ ๋ฒ”์œ„๋ฅผ ๋ˆ„๋ฅด๋ฉด line-through ํด๋ž˜์Šค ์Šคํƒ€์ผ์ด ์ƒ๊ธฐ๊ณ , ํ•ด๋‹น data ๊ฐ’๋„ ํ† ๊ธ€๋˜์–ด ๋ฐ”๋€๋‹ค.

 

๋ฒ„ํŠผ ์กฐ์ž‘ ์‹œ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํƒ€์ผ๊ณผ ๋ฐ์ดํ„ฐ์—๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค.