【DevUI】Pagination 分页组件使用详解

📄 DevUI Pagination 分页组件使用详解

Pagination(分页)组件用于将大量数据分割成多个页面进行展示,用户可以通过它直观地在不同数据页之间导航,是数据表格、列表等场景中不可或缺的一部分。
在这里插入图片描述

1. 基本用法与尺寸

最基本的用法是绑定总条目数、当前页码和每页大小。组件提供三种尺寸(sm, md, lg)以适应不同设计需求。

<!-- 小尺寸 (sm) -->
<d-pagination
    [size]="‘sm‘"
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize"
    [canViewTotal]="true"
    [canChangePageSize]="true">
</d-pagination>

<!-- 中尺寸 (md) - 默认值 -->
<d-pagination
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize">
</d-pagination>

<!-- 大尺寸 (lg) -->
<d-pagination
    [size]="‘lg‘"
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize">
</d-pagination>

在组件类中定义数据模型:

export class YourComponent {
  pager = {
    total: 1000,
    pageIndex: 1,
    pageSize: 20
  };
}

2. 极简模式

极简模式 (lite) 简化了视觉元素,适用于信息密集、需要节省空间的页面。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

<!-- 标准极简模式 -->
<d-pagination
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize"
    [lite]="true"
    [canViewTotal]="true"
    [canChangePageSize]="true">
</d-pagination>

<!-- 超极简模式:隐藏页码列表 -->
<d-pagination
    [size]="‘sm‘"
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize"
    [lite]="true"
    [showPageSelector]="false" <!-- 隐藏数字页码 -->
    [canChangePageSize]="true">
</d-pagination>

<!-- 带配置菜单的极简模式 -->
<d-pagination
    [size]="‘sm‘"
    [lite]="true"
    [haveConfigMenu]="true"
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize">
    <!-- 可以插入自定义的配置项 -->
    <div class="custom-config-item">自定义设置项</div>
</d-pagination>

3. 多种高级配置

组件支持丰富的功能扩展,如页面跳转、自定义样式和下拉框方向控制。
在这里插入图片描述

<!-- 启用输入框跳转功能 -->
<d-pagination
    [canJumpPage]="true"
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize">
</d-pagination>

<!-- 同时显示跳转输入框和按钮 -->
<d-pagination
    [canJumpPage]="true"
    [showJumpButton]="true" <!-- 显示“跳转”按钮 -->
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize">
</d-pagination>

<!-- 完全自定义文本和前后页按钮 -->
<d-pagination
    [canJumpPage]="true"
    [goToText]="‘Jump to‘" <!-- 自定义跳转框前的文字 -->
    [preLink]="‘上一页‘"    <!-- 自定义上一页按钮文字 -->
    [nextLink]="‘下一页‘"    <!-- 自定义下一页按钮文字 -->
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize">
</d-pagination>

<!-- 自定义每页条数下拉框选项和弹出方向 -->
<d-pagination
    [canChangePageSize]="true"
    [pageSizeOptions]="[10, 20, 50, 100]" <!-- 自定义可选条数 -->
    [pageSizeDirection]="[‘centerUp‘]"    <!-- 下拉菜单向上展开 -->
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize">
</d-pagination>

4. 特殊情况处理

组件对边界情况提供了良好的处理方式。

<!-- 当页码超出最大范围时,显示真实的无效页码(用于特定编辑场景) -->
<d-pagination
    [showTruePageIndex]="true"
    [total]="10"
    [(pageIndex)]="invalidPageIndex" <!-- 比如设置为5,但实际只有1页 -->
    [(pageSize)]="pageSize">
</d-pagination>

<!-- 总条目数为0时的优雅显示 -->
<d-pagination
    [total]="0"
    [(pageIndex)]="pageIndex"
    [(pageSize)]="pageSize"
    [canViewTotal]="true">
</d-pagination>

5. 事件监听

通过事件可以响应分页操作,以便向服务器请求新数据。

<d-pagination
    [total]="pager.total"
    [(pageIndex)]="pager.pageIndex"
    [(pageSize)]="pager.pageSize"
    (pageIndexChange)="onPageIndexChange($event)"
    (pageSizeChange)="onPageSizeChange($event)">
</d-pagination>
export class YourComponent {
  onPageIndexChange(newIndex: number) {
    console.log(‘页码变为:‘, newIndex);
    // 通常在这里触发数据加载
    this.loadData(newIndex, this.pager.pageSize);
  }

  onPageSizeChange(newSize: number) {
    console.log(‘每页大小变为:‘, newSize);
    // 改变每页大小后,通常回到第一页并加载数据
    this.pager.pageIndex = 1;
    this.loadData(1, newSize);
  }

  loadData(pageIndex: number, pageSize: number) {
    // 调用API获取对应页的数据
  }
}

6. 功能特性速查表

下表汇总了核心属性,方便您快速查阅:

功能属性/事件说明与常用值
数据绑定[total], [(pageIndex)], [(pageSize)]必须绑定的三个核心属性
尺寸[size]‘sm‘, ‘md‘(默认), ‘lg‘
极简模式[lite]="true"启用简洁视觉样式
显示总条数[canViewTotal]="true"显示“共 X 条”文本
自定义总条数文本[totalItemText]="‘Total‘"替换“共”字
切换每页条数[canChangePageSize]="true"显示下拉选择框
自定义条数选项[pageSizeOptions]="[10,20,50]"自定义下拉选项
页面跳转[canJumpPage]="true"显示跳转输入框
显示跳转按钮[showJumpButton]="true"在跳转输入框后显示按钮
隐藏数字页码[showPageSelector]="false"仅显示上下页按钮,不显示数字
自定义最大页码按钮数[maxItems]="5"控制同时显示的页码数量
超出页码显示[showTruePageIndex]true时显示超出的无效页码
自定义文本[preLink], [nextLink], [goToText]自定义按钮和提示文本
事件监听(pageIndexChange), (pageSizeChange)页码或页大小变化时触发

💡 总结与最佳实践

DevUI Pagination 组件功能全面,配置灵活。在使用时,建议:

  1. 明确需求:先确定是否需要每页条数切换、页面跳转等高级功能,按需启用。
  2. 绑定数据:确保正确绑定 totalpageIndexpageSize,这是组件运行的基础。
  3. 处理事件:在 pageIndexChangepageSizeChange 事件中处理数据加载逻辑。
  4. 注意边界:在数据量为0或1页时,组件会自动调整显示状态,保持界面友好。

参考文档

MateChat:https://gitcode.com/DevCloudFE/MateChat

MateChat官网:https://matechat.gitcode.com

DevUI官网:https://devui.design/home

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值