ElementUI 페이지 나누기 구성 요소 2차 패키지
<template>
<paging-query :pager="pager" @query="getItemList"/>
template>
<script>
import PagingQuery from '@/components/PagingQuery';
export default {
components: {
PagingQuery,
},
data() {
pager: {
count: 0,
page: 1,
rows: 15,
},
},
methods: {
//
getItemList() {}
},
script>
paging-query.vue
<template>
<form class="mod-paging fn-clear" @submit.prevent>
<el-pagination
small
class="fn-right"
layout="total, sizes, prev, pager, next, jumper"
background
:pager-count="7"
:total="pager[props.total]"
:current-page.sync="pager[props.page]"
:page-size="pager[props.rows]"
:page-sizes="pageSizes"
@size-change="onChangeSize"
@current-change="onChangePage"
>el-pagination>
<el-button icon="el-icon-refresh" @click="$emit('query')"> el-button>
form>
template>
<script>
import config from '@/config/app.config';
export default {
name: 'Paging',
//
model: {
prop: 'pager',
event: 'setPager',
},
props: {
pager: {
type: Object,
required: true,
},
refresh: {
type: Boolean,
},
pageSizes: {
type: Array,
default: () => ([10, 15, 30, 50]),
},
props: {
type: Object,
required: false,
default: () => ({
//
page: 'page',
//
rows: 'rows',
//
total: 'count',
}),
},
},
computed: {
total() {
return this.pager[this.props.total] || 0;
},
//
isEmptyList() {
return (
Math.ceil(this.pager[this.props.total] / this.pager[this.props.rows])
< this.pager[this.props.page]
);
},
},
watch: {
total() {
// ,
if (this.pager[this.props.page] > 1 && this.isEmptyList) {
this.$emit(
'setPager',
Object.assign(this.pager, {
[this.props.page]: this.pager[this.props.page] - 1,
})
);
this.$nextTick(() => {
this.$emit('query');
});
}
},
},
methods: {
//
onChangeSize(rows) {
const temp = {
[this.props.rows]: rows,
// ,
[this.props.page]: rows <= this.total ? 1 : this.pager[this.props.page],
};
this.$emit('setPager', Object.assign(this.pager, temp));
//
this.$nextTick(() => {
this.$emit('query');
});
},
//
onChangePage(page) {
this.$emit(
'setPager',
Object.assign(this.pager, { [this.props.page]: page })
);
this.$emit('query');
},
},
};
script>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Context API, Redux, Mobx, Swr, Recoilcontext를 이용하면 단계마다 일일이 props를 넘겨주지 않고도 컴포넌트 트리 전체에 데이터를 제공할 수 있다. 컴포넌트가 한 두 개 정도이면 크게 불편함도 없지만, 만약 컴포넌트가 3~4개 혹은 그 이상일 경...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.