本文将介绍如何通过子表单来配置一个通用的数据列表页,从模板中导入官方提供的例子:
image.png
先看一下效果:
Kapture 2022-07-16 at 18.53.09.gif
一个最基础的列表页就创建完成了,包括了查询,分页,列表数据的操作功能,下面我们来对此进行详细的解析。

列表配置

使用子表单文字字段实现列表的数据展示。
image.png


image.png


操作列使用自定义组件字段,实现了编辑和删除按钮展示。
image.png


image.png

这里的事件配置triggerEvent在后面会进行详细介绍。


使用分页字段进行列表的分页,没有采用子表单自带的分页是因为我们只需要获取一页数据进行展示,子表单只需要绑定一页数据。
image.png


自定义组件事件配置

自定义组件模板中,可以通过triggerEvent方法调用表单动作面板中的事件。
triggerEvent(eventName, args)
eventName: 事件名称。
args: 事件参数,在动作设置面板中可以通过 const {$eventArgs} = arguments[0]获取。
image.png


image.png

数据加载

可以通过数据源来指定后端请求接口,返回数据后进行列表加载,下面我们通过模拟数据来替代后端请求数据。

  1. function loadDataList () {
  2. // 分页组件当前页数据
  3. const {currentPage} = arguments[0]
  4. // 模拟数据
  5. let listdata = Array.from({length: 10}).map((_, index) => {
  6. let row = (currentPage - 1) * 10 + index + 1
  7. return {
  8. id: row,
  9. name: 'Tom' + row,
  10. state: 'California' + row,
  11. city: 'Los Angeles',
  12. address: 'No. 189, Grove St, Los Angeles',
  13. zip: 'CA 90036'
  14. }
  15. })
  16. // 给列表赋值
  17. this.setData({
  18. list: listdata
  19. })
  20. // 修改分页组件 total
  21. this.setOptions(['currentPage'], {
  22. total: 100
  23. })
  24. }

查询按钮方法:

  1. const currentPage = 1
  2. this.setData({
  3. currentPage: 1
  4. })
  5. // 调用 loadDataList 方法加载数据并给列表赋值
  6. this.triggerEvent('loadDataList', {
  7. currentPage
  8. })

页数改变方法:

  1. const {value} = arguments[0]
  2. this.triggerEvent('loadDataList', {
  3. currentPage: value
  4. })