일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 개발
- 리엑트
- 라이덴
- 김용민
- 세팅
- 리눅스
- 향릉
- 공연
- 야란
- 스팩
- 원신
- 인덱스와 제약조건 둘 다 삭제
- 쿠조사라
- java17
- Linux
- react
- java
- docker
- 주진우
- 타이라니
- ubuntu
- 컨테이너
- 제프벡
- 프로그래밍
- Smashing Pumpkins
- 간단정리
- 김어준
- 나꼼수
- 도커
- 나는꼼수다
Archives
- Today
- Total
다른
[Vue.js] 체크박스 전체선택 관련 간단 정리 본문
약관동의 관련 작업을 하면서
체크박스 전체 선택 처리와 validation 체크 구현이 필요하여 작업한 내용을 정리해본다.
* HTML 영역
<input type="checkbox" v-model="agreeAll" value="all"> <!-- 전체선택 -->
<input type="checkbox" v-model="agreeChecked" value="agree1"> <!-- 동의1 -->
<input type="checkbox" v-model="agreeChecked" value="agree2"> <!-- 동의2 -->
* Script 영역
data: function () {
return {
.....
agreeCheckList: ["agree1", "agree2"], // 비교를 위한 전체 CheckList 변수
agreeChecked: [], // 체크 된 목록을 담을 배열 변수
....
}
},
computed: {
agreeAll: {
get: function () {
return this.agreeCheckList.length === this.agreeChecked.length;
},
set: function (event) {
this.agreeChecked = event? this.agreeCheckList : []; // 전체 대상을 넣거나 비우는 역할
},
}
}
간단히 설명하면
1. 전체선택 v-model 인 agreeAll 은 computed 로 만들어 줌.
2. agreeCheckList 는 전체 선택시 대상이 되는 모든 value 값을 미리 넣어두어 실제 체크 된 항목과 비교하기 위함.
3. agreeChecked는 실제 체크 된 항목만 저장되는 model
* 동의 여부 체크 로직
// 체크여부 확인
if( this.agreeChecked.length !== this.agreeCheckList.length ){
const notChecked = this.agreeCheckList.filter(v => !this.agreeChecked.includes(v));
if( notChecked[0] === "agree1") {
alert('agree1는 필수입니다.');
return;
}
if( notChecked[0] === "agree2") {
alert('agree2는 필수입니다.');
return;
}
}
agreeCheckList 에 필터를 사용하여 agreeChecked 에 없는 항목을 리턴받아 처리하였다.
반복문으로 처리할까 하다가 항목이 두개뿐이라서 필터로 구현했다.