Vue-이벤트

임재헌·2023년 5월 31일
0

Vue

목록 보기
4/5

click 이벤트

<template>
   <div>
    <h1>click이벤트</h1>
    <button @click="increaseCounter">좋아요</button>
    <p>{{ counter }}</p>
   </div>
</template>

<script>
export default {
  data() {
    return {
      counter: 0
    }
  },
  methods: {
    increaseCounter() {
      this.counter += 1
    }
  }
}
</script>

change 이벤트

<template>
  <div>
    <h3>change 이벤트</h3>
    <select name="" id="" @change="changeCity" v-model="selectedCity">
      <option value="">==도시선택==</option>
      <option v-for="city in cityList" :key="city.cityCode" :value="city.cityCode">{{city.title}}</option>
    </select>
    <select name="" id="">
      <option v-for="dong in selectedDongList" :key="dong.dongCode" :value="dong.dongCode">{{dong.dongTitle}}</option>
    </select>
    <hr>
    <!-- 양방향이기 때문에 change이벤트를 사용하지 않고도 구현 가능 (단, 가독성이 떨어지므로 비추천) -->
    <select name="" id="" v-model="selectedCity">
      <option value="">==도시선택==</option>
      <option v-for="city in cityList" :key="city.cityCode" :value="city.cityCode">{{city.title}}</option>
    </select>
    <select name="" id="">
      <option v-for="dong in dongList.filter(dong => dong.cityCode === selectedCity)" :key="dong.dongCode" :value="dong.dongCode">{{dong.dongTitle}}</option>
    </select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedCity: '', // 02|051|064저장
      cityList: [
        { cityCode: '02', title: '서울' },
        { cityCode: '051', title: '부산' },
        { cityCode: '064', title: '제주' }
      ],
      dongList: [
        { cityCode: '02', dongCode: '1', dongTitle: '서울 1동' },
        { cityCode: '02', dongCode: '2', dongTitle: '서울 2동' },
        { cityCode: '02', dongCode: '3', dongTitle: '서울 3동' },
        { cityCode: '02', dongCode: '4', dongTitle: '서울 4동' },
        { cityCode: '051', dongCode: '1', dongTitle: '부산 1동' },
        { cityCode: '051', dongCode: '2', dongTitle: '부산 2동' },
        { cityCode: '051', dongCode: '3', dongTitle: '부산 3동' },
        { cityCode: '064', dongCode: '1', dongTitle: '제주 1동' },
        { cityCode: '064', dongCode: '2', dongTitle: '제주 2동' }
      ],
      selectedDongList: []
    }
  },
  methods: {
    changeCity() {
      // alert('#' + this.selectedCity + '#') 02|051|064

      // 선택한 selectedCity가 02라면 dongList에서 02만 걸러내서 selectedDongList에 저장
      this.selectedDongList = this.dongList.filter(dong => dong.cityCode === this.selectedCity)
      // alert(this.selectedDongList)
      // 예) { cityCode: '064', dongCode: '1', dongTitle: '제주 1동' },
      //     { cityCode: '064', dongCode: '2', dongTitle: '제주 2동' }
    }
  }
}
</script>

key 이벤트

<template>
   <div>
    <h1> Key이벤트</h1>
    <input type="search" v-model="searchText" @keyup.enter="doSearch">
    <button @click="doSearch">찾기</button>
    <!-- keyup 이벤트의 세부 속성들 -->
    <!-- .enter 엔터가 입력될시 -->
    <!-- .tab  탭키 -->
    <!-- .space  스페이스 -->
    <!--  .ctrl.enter  컨트롤, 엔터-->
    <hr>
    <input type="search" v-model="searchText" @keyup="checkEnter($event)">
    
   </div>
</template>

<script>
/* eslint-disable */
export default {
  data() {
    return {
      searchText: ''
    }
  },
  methods: {
    doSearch() {
      alert(this.searchText)
    },
    checkEnter(event) {
      //alert(event)
      if (event.keyCode === 13) {
        this.doSearch()
      }
    }
  }
}
</script>

0개의 댓글

관련 채용 정보