방명록
- [개발자의품격][부트캠프][1기][19차시] Vue.js #3 | event2022년 03월 07일 08시 43분 19초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
event
click
<template> <div> <button @click="increaseCounter">Add 1</button> <!-- 함수를 호출하지 않고 click 속성에 바로 적용할 수도 있다. --> <!-- <button @click="counter += 1">Add 1</button> --> <p>{{ counter }}</p> </div> </template> <script> export default { components: {}, data() { return { counter: 0 } }, methods: { increaseCounter() { this.counter += 1 } } } </script>
change
change 이벤트를 가장 많이 사용하는 경우는 selectbox에서 이다.
<template> <div> <select name="" id="" v-model="selectedCity" @change="changeCity"> <option value="02">서울</option> <option value="051">부산</option> <option value="064">제주</option> </select> <select name="" id=""> <option value="" :key="dong.code" v-for="dong in dongList"> {{ dong.title }} </option> </select> </div> </template> <script> export default { components: {}, data() { return { selectedCity: '', dongList: [] } }, methods: { changeCity() { console.log(this.selectedCity) if (this.selectedCity === '02') { this.dongList = [ { code: '1', title: '서울 1동' }, { code: '2', title: '서울 2동' }, { code: '3', title: '서울 3동' } ] } else if (this.selectedCity === '051') { this.dongList = [ { code: '1', title: '부산 1동' }, { code: '2', title: '부산 2동' }, { code: '3', title: '부산 3동' } ] } else if (this.selectedCity === '064') { this.dongList = [ { code: '1', title: '제주 1동' }, { code: '2', title: '제주 2동' }, { code: '3', title: '제주 3동' } ] } } } } </script>
※ 데이터 건수가 많지 않을 때는 한 번에 다 가져오는 것이 유리하다. 따라서 실무에서는 change 이벤트 대신 filter 함수를 이용한다.
<template> <div> <select name="" id="" v-model="selectedCity"> <!-- change 이벤트 대신 filter 함수 이용 --> <option :value="city.cityCode" :key="city.cityCode" v-for="city in dongList.filter((d) => d.dongCode === '1')" > {{ city.cityTitle }} </option> </select> <select name="" id=""> <option :value="dong.dongCode" :key="dong.dongCode" v-for="dong in dongList.filter((d) => d.cityCode === selectedCity)" > {{ dong.dongTitle }} </option> </select> </div> </template> <script> export default { components: {}, data() { return { selectedCity: '', dongList: [ { cityCode: '02', cityTitle: '서울', dongCode: '1', dongTitle: '서울 1동' }, { cityCode: '02', cityTitle: '서울', dongCode: '2', dongTitle: '서울 2동' }, { cityCode: '02', cityTitle: '서울', dongCode: '3', dongTitle: '서울 3동' }, { cityCode: '051', cityTitle: '부산', dongCode: '1', dongTitle: '부산 1동' }, { cityCode: '051', cityTitle: '부산', dongCode: '2', dongTitle: '부산 2동' }, { cityCode: '051', cityTitle: '부산', dongCode: '3', dongTitle: '부산 3동' }, { cityCode: '064', cityTitle: '제주', dongCode: '1', dongTitle: '제주 1동' }, { cityCode: '064', cityTitle: '제주', dongCode: '2', dongTitle: '제주 2동' }, { cityCode: '064', cityTitle: '제주', dongCode: '3', dongTitle: '제주 3동' } ] } } } </script>
key
<template> <div> <!-- @keyup에서 keyCode 확인하는 함수 없이 @keyup.enter로 엔터키 감지 가능 --> <input type="search" name="" id="" @keyup.enter="doSearch()" /> <!-- <input type="search" name="" id="" @keyup="checkEnter(event)" /> --> <button @click="doSearch">조회</button> </div> </template> <script> export default { components: {}, data() { return { sampleData: '' } }, methods: { doSearch() { console.log('doSearch 실행') } // }, // checkEnter() { // if (event.keyCode === 13) { // this.doSearch() // } // } } } </script>
728x90반응형'영광의 시대! > 2022 개발자의 품격 부트캠프 1기' 카테고리의 다른 글
[개발자의품격][부트캠프][1기][19차시] Vue.js #5 | 재사용 콤퍼넌트 (0) 2022.03.07 [개발자의품격][부트캠프][1기][19차시] Vue.js #4 | extra (0) 2022.03.07 [개발자의품격][부트캠프][1기][18차시] Vue.js #2 | 데이터바인딩 (0) 2022.03.05 [개발자의품격][부트캠프][1기][17차시] Vue.js #1 | 설치, 스니핏 설정, 프로젝트 생성, 구조, 라우터 (0) 2022.03.05 [개발자의품격][부트캠프][1기][16차시] 부트스트랩 #4 | 모달 (0) 2022.03.02 다음글이 없습니다.이전글이 없습니다.댓글