Pagination 分页
示例
尺寸
<template>
<article>
<section>
<veui-pagination
class="pagination"
:page="page"
:total="total"
:to="to"
/>
</section>
<section>
<veui-pagination
class="pagination"
:page="page"
:total="total"
:to="to"
ui="s"
/>
</section>
<section>
<veui-pagination
class="pagination"
:page="page"
:total="total"
:to="to"
ui="xs"
/>
</section>
</article>
</template>
<script>
import { Pagination } from 'veui'
export default {
components: {
'veui-pagination': Pagination
},
data () {
return {
to: './pagination?page=:page',
total: 10101
}
},
computed: {
page () {
return Number(this.$route.query.page) || 1
}
}
}
</script>
<style lang="less" scoped>
article {
text-align: right;
}
.pagination {
margin: 1.2em 0;
}
</style>
每页个数
使用 page-size
属性来指定当前每页的个数。
使用 page-sizes
属性来指定每页个数候选项。
<template>
<article>
<veui-pagination
class="pagination"
:page="page"
:page-size="pageSize"
:page-sizes="pageSizes"
:total="total"
:to="to"
@pagesizechange="handlePageSizeChange"
/>
</article>
</template>
<script>
import { Pagination } from 'veui'
export default {
components: {
'veui-pagination': Pagination
},
data () {
return {
to: './pagination?page=:page',
total: 10101,
pageSize: 20,
pageSizes: [20, 30, 50, 100]
}
},
computed: {
page () {
return Number(this.$route.query.page) || 1
}
},
methods: {
handlePageSizeChange (size) {
this.pageSize = size
if (this.page !== 1) {
this.$router.push({
path: './pagination?page=1'
})
}
}
}
}
</script>
<style lang="less" scoped>
article {
text-align: right;
}
.pagination {
margin: 1.2em 0;
}
</style>
可选部分
使用 show-total
/ show-page-size
/ show-goto
属性来分别控制是否显示项目总数/每页项目数选择器/跳转到指定页。
<template>
<article>
<section class="toggles">
<veui-checkbox
v-model="showTotal"
class="checkbox"
>
Show total
</veui-checkbox>
<veui-checkbox
v-model="showPageSize"
class="checkbox"
>
Show page size
</veui-checkbox>
<veui-checkbox
v-model="showGoto"
class="checkbox"
>
Show goto
</veui-checkbox>
</section>
<section>
<veui-pagination
:page="page"
:total="total"
to="./pagination?page=:page"
:show-total="showTotal"
:show-goto="showGoto"
:show-page-size="showPageSize"
/>
</section>
</article>
</template>
<script>
import { Pagination, Checkbox } from 'veui'
export default {
components: {
'veui-pagination': Pagination,
'veui-checkbox': Checkbox
},
data () {
return {
to: '.',
total: 10101,
showTotal: true,
showGoto: true,
showPageSize: true
}
},
computed: {
page () {
return Number(this.$route.query.page) || 1
}
}
}
</script>
<style lang="less" scoped>
.toggles {
margin-bottom: 20px;
}
.checkbox + .checkbox {
margin-left: 16px;
}
</style>
API
属性
名称 | 类型 | 默认值 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
ui | string | - | 预设样式。
| ||||||||
page | number | 1 | 当前页码(从 1 开始)。 | ||||||||
total | number | - | 项目总数。 | ||||||||
to | string | Object | '' | 目标链接模板。类型见 | ||||||||
native | boolean | false | 原生链接跳转。 | ||||||||
page-size | number | pagination.pageSize |
每页个数。 | ||||||||
page-sizes | Array<number> | pagination.pageSizes | 每页个数候选项。 | ||||||||
show-goto | boolean | false | 是否显示直接跳转到页码。 | ||||||||
show-total | boolean | false | 是否显示项目总数。 | ||||||||
show-page-size | boolean | false | 是否显示每页项目数选择器。 |
事件
名称 | 描述 |
---|---|
pagesizechange | 每页显示项目被切换时触发,回调参数为 (size: number) 。size 为新的每页显示项目数。 |
redirect | 链接跳转时触发,回调参数为 (page: number, event: Object) 。page 为要跳转的目标页码。event 为原生的事件对象,在 native 为 true 时,调用 event.preventDefault 可阻止跳转。 |
全局配置
配置项 | 类型 | 默认值 | 描述 |
---|---|---|---|
pagination.pageSize | number | 30 | 每页个数。 |
pagination.pageSizes | Array<number> | [30, 50, 100] | 每页个数候选项。 |