PagedList 分页列表

分页组件和列表数据插槽的高阶封装,集成分页请求,数据处理,自动发送等功能,用于简化分页场景需求。

提示

Pagination组件文档参照 Pagination(Element)

无序列表(ul)

分页表格(table)

分页列表恢复

本例会用两个会销毁的tab容器模拟页面间的切换,数据恢复只有本组件创建时才会生效,如果同页面内希望恢复,可以通过修改组件的key让组件重新渲染。

此外本来也展示了如何进行请求时序控制

Attributes

参数 类型 说明 可选值 默认值
paged-data object 分页数据源,必须包含总条数和数据数组,例如{total: 200, rows: [...]} -- --
extra-form object 额外的请求附带数据,传入响应式对象,传入对象引用改变或对象属性改变可自动触发请求且会重置页码 -- --
get-paged-data Function(params, accessKey) 请求回调函数,会接受分页数据和extra-form传入的数据合并成params数据, 以及用于进行时序请求需要的key -- --
loading boolean 数据是否在请求中 -- --
created-auto-send boolean 是否在组件创建后自动发送请求 -- --
init-data object 初始化分页数据,可以初始化curPage(当前页)和pageSize(每页条数) -- { curPage: 1, pageSize: 20 }
prop-keys object 组件内属性字段配置 -- 详见prop-keys
pagination-props object Pagination组件属性对象,支持绝大部分参数,不支持配置的参数见prop-keys -- --
pagination-events object Pagination组件上绑定的监听事件对象 -- --
loading-props string / object Loading组件属性对象 Loading --
refresh boolean 是否重新发送请求,必须用.sync修饰符,值为true时重新发送请求,然后设置值为false。也可以用方法重新发起请求 -- --
refresh boolean 是否重新发送请求,必须用.sync修饰符,值为true时重新发送请求,然后设置值为false。也可以用方法重新发起请求 -- --
fetch-access-key string/number 传入的请求时序控制值,只能为基础类型的值,组件内会默认使用当前时间戳,如果因为并发原因时间戳无法满足可手动传入值 -- Date.now()
-- -- 以下属性为可选的高级功能,使用时可能需要多理解 -- --
need-store boolean 是否需要在每次请求时在SessionStorage中保存分页数据和请求的params -- --
restore boolean 是否需要恢复之前保存的值,适用于页面跳转后返回时恢复页面数据 -- --
store-key string 组件保存数据时使用的命名空间,不设置则数据保存时会覆盖之前的值。建议使用当前路由name + 页面内组件用途的关键字 -- 'data'

注意

组件初始化时如果设置`restore`为true且之前有存储的数据,那么组件创建后会用之前存储的数据作为参数传递给请求回调函数。

在请求回调函数执行之前组件不会响应`extra-form`属性的变化,并且分页组件也不会显示。

如果希望在异步回调函数有结果返回之前都不响应变化(比如希望手动恢复`extra-form`的展示值),可以在回调函数里返回一个Promise对象

prop-keys

注意

配置参数是prop-keys对象的键名,会合并到默认值对象。不能使用短横线写法

参数 类型 说明 默认值
total string 数据源中总数对于字段 'total'
rows string 数据源中数据数组对于字段 'rows'
pageSize string params中每页记录条数字段,不影响init-data中字段,下同 'size'
curPage string params中当前页码字段 'page'

limited Pagination Attributes

下列Pagination组件的参数因为封装组件内维护了,故无法通过pagination-props来配置。

参数 说明
page-size 每页条数
current-page 当前页码,如需手动修改请使用组件提供的方法
total 总记录条数
curPage params中当前页码字段

Events

参数 说明 回调参数
extra-form-change extra-form发生变化时触发 (newVal: any, oldValJson: string)

Methods

方法名 说明 参数
getStoreData 获取组件内存储的数据,结构为 { pagination: {...}, params: {...} } --
sendRequest 用当前params参数发送请求,用于重新发送请求。和refresh功能一致 --
clearStoreData 清除组件内存储的数据 --

Slots

name 说明 作用域数据
-- 默认插槽,内容会放置于表单项后,Form组件中。 --
button 自定义按钮,传入用于触发数据改变的函数。 { onSearch: Function() }

Time Control

时序请求

在很多需要短时高频ajax请求,由不能对请求做等待限制的场景下,例如匹配搜索。 因为接口是异步的,并且每次请求的返回顺序是不确定的。会导致先请求的数据后返回的情况,这种场合下一般需要抛弃之前请求的回调处理逻辑,仅处理最后一次发送请求的回调。

常见做法是定义一个变量,用来保存每次请求时的时间戳,而每次请求时会当时的时间戳传入接口请求函数,在接口回调里判断传入的时间戳和保存的值是否一致,不一致则放弃后续处理逻辑。

原理是变量值在每次发起请求时都会更新,而传入函数的时间戳会定格在请求发起时,只有最后一次请求函数内传入的时间戳会和保存的值一致。