Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- slice
- Has
- 울산맛집
- 자바스크립트
- clear
- TS
- undefined
- 정보처리기사
- 객체
- 배열
- 함수
- 오븐
- 울산 맛집
- SQL 전문가
- forEach
- 휘낭시에
- SQL
- 울산 남구 맛집
- Delete
- Map
- Vue
- 화살표 함수
- sqld
- let
- set
- size
- TypeScript
- 홈베이킹
- vuejs
- Javascript
Archives
- Today
- Total
Bae
[VueJS] 게시판 페이징 구현 본문
ㅁ 실행코드
- 게시판 페이징을 위한 화면 구성
<div class="card-wrapper p-0">
<div class="card" style="heigth: 90%;">
<div class="table-wrapper overflow-auto flex-fill">
<table class="w-100" style="text-align: center;">
<thead>
<tr>
<th>
이름
</th>
<th>
나이
</th>
<th class="d-none d-xl-flex" />
</tr>
</thead>
<tbody>
<template v-for="a in paginatedData">
<tr v-for="b in a">
<td>
{{ b.name }}
</td>
<td>
{{ b.age }}
</td>
</tr>
</template>
</tbody>
</table>
</div>
<div class="pagination d-flex justify-content-center align-items-center">
<button :disabled="pageNum === 0" class="btn next" @click="prevPage()">
<span class="material-icons-outlined">
chevron_left
</span>
</button>
<span>{{ pageNum + 1 }} / {{ pageCount===0? 1: pageCount }}</span>
<button :disabled="pageNum >= pageCount - 1" class="btn next" @click="nextPage()">
<span class="material-icons-outlined">
chevron_right
</span>
</button>
</div>
</div>
</div>
* a의 값
[ { "name": "a", "age": 13 } ]
[ { "name": "b", "age": 14 } ]
[ { "name": "c", "age": 15 } ]
[ { "name": "d", "age": 16 } ]
[ { "name": "e", "age": 17 } ]
[ { "name": "f", "age": 18 } ]
=> 따라서 원하는 name과 age 값을 얻기 위해서는 for 문을 한번 더 돌려줘야 함
- 게시판 페이징 기능을 실행하기위한 vuejs 코드
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
data(vm: any): any {
return {
pageNum: 0,
listArray: [[{ name: 'a', age: 13 }], [{ name: 'b', age: 14 }], [{ name: 'c', age: 15 }], [{ name: 'd', age: 16 }], [{ name: 'e', age: 17 }], [{ name: 'f', age: 18 }]],
pageSize: 5,
};
},
computed: {
pageCount() {
const listLeng = this.listArray.length;
const listSize = this.pageSize;
let page = Math.floor(listLeng / listSize);
if (listLeng % listSize > 0) page += 1;
return page;
},
paginatedData() :any {
const start = this.pageNum * this.pageSize;
const end = start + this.pageSize;
return this.listArray.slice(start, end);
},
},
methods: {
nextPage() {
this.pageNum += 1;
},
prevPage() {
this.pageNum -= 1;
},
},
});
</script>
* 데이터베이스를 통해 값을 들고 오고 싶다면 listArray 배열에 들고 온 값을 넣어주면 됨
* pageSize는 한 페이지에 몇 개의 데이터를 넣을지 정해줌
pageSize=5 일 때 한 페이지당 데이터는 5개씩 출력됨
* pageCount는 총 몇 페이지인지 저장하는 변수임
* listArray 배열이 들고 온 모든 데이터라면 paginatedData는페이지당 보여줄 데이터를 저장함
ㅁ 실행결과
'VueJS' 카테고리의 다른 글
[VueJS] FullCalendar 적용하기 (0) | 2022.04.29 |
---|---|
[VueJS] Treegrid (0) | 2022.02.15 |
[VueJS] 엑셀 다운로드(Excel download) (0) | 2022.02.08 |
[VueJS] Checkbox 전체선택 및 전체해제 (0) | 2022.01.10 |
Comments