Table 表格
基础使用
基础的表格展示用法。当 x-table 元素中注入 data 对象数组后,在 x-table-column 中用 prop 属性来对应对象中的键名即可填入数据,用 label 属性来定义表格的列名。
带边框的表格
默认情况下,Table 组件是不具有竖直方向和外层边框的,如果需要,可以使用 border 属性,把该属性设置为 true 即可启用。
流体高度
通过设置 max-height 属性为 x-table 指定最大高度。此时若表格所需的高度大于最大高度,则会显示一个滚动条。
单元格省略
当内容超过当前的宽度,导致换行,想通过省略保持一行内容。可设置 ellipsis 可以让单元格内容根据宽度自动省略。
排序
对某一列数据进行排序,在对应列中设置 sorter 为 true 布尔类型,即可开启本地自动排序。自动排序只支持数字类型排序,如果需要本地自定义排序,可以给 sorter 传入一个 Function,该函数接收三个参数,依次是 prev, next, prop。前两个参数相当于 Array.sort 函数的传入的,而 prop 是额外加入的。如果是需要远程服务器排序,可以将 sorter 设置为 remote 字符串类型,当排序条件改变时,会触发 change 事件,并接受列上的排序、筛选条件。
过滤
对某一列数据进行筛选,在对应列中设置 filter 为 true 布尔类型,即可开启本地自动过滤。筛选项在默认情况,是跟根据当前 data 计算出的不重复数据。如果需要自定义筛选项,需要设置 filters 为 { label: string, value: any } 的数组类型。当然,与排序一样,也支持自定义过滤函数和远程过滤。给 filter 传入 Function,可根据自定义的逻辑进行过滤,该函数接受三个参数,依次是 source 行数据,prop 过滤列,filters 过滤值(数组类型)。如果是需要远程服务器排序,可以将 filter 设置为 remote 字符串类型,当过滤条件改变时,会触发 change 事件,并接受列上的排序、筛选条件。
加载中
设置 loading 为 true,可以显示加载动画。可以结合 排序 和 过滤 使用。
自定义单元格内容
通过 slots.default 可自定义内容单元格的渲染。 通过 slots.header 可自定义表头单元格的渲染。
INFO
如果列开启了 type='expand' 展开行功能,那么 slots.default 则是展开行的内容,如果想自定义触发按钮可以设置 slots.expand。
固定表头和隐藏表头
默认情况下,如果内容高度超过了所设置的 max-height,表格的所有内容(包括表头)都会随着滚动而位移。这是故意为之,因为这能节省不必要的性能开支。如果需要表头滚动可以设置 fixed-header 为 true。如果不需要表头也可以去除,设置 hide-header 为 true 即可。
固定列
固定列需要使用 fixed 属性,它接受 Boolean 值。 如果为 true, 列将被左侧固定。它还接受传入字符串,left 或 right,表示左边固定还是右边固定。
列宽度
通过对设置 width、min-width、max-width 对列宽度进行控制,三个接受 Boolean 和 Number 类型的常数。min-width 默认为 80px。
WARNING
这几乎只在 layout: fixed 的布局下工作,因为 layout: auto 的模式是基于内容进行自动调整宽度,这与上述三者属性有一定程度的冲突。
展开行
通过设置列的 type 为 expand, 和 slots.default 插槽可以开启展开行功能,slots.default 模板会被渲染成为展开行的内容,模板可以接收一个 source 行数据。
布局
默认下 layout="fixed",相当作用在 table 样式的 table-layout: fixed,该模式下可以通过 width、min-width、max-width 自定义调节各种列宽度。如果想让列宽根据内容自动适应,那么需要设置 layout="auto",相当作用在 table 样式的 table-layout: auto。
变量声明式
可以不用上述 template 风格书写 x-table-column,通过设置 columns 变量来声明列。
Table API
属性
| 属性名 | 说明 | 类型 | 默认值 | 是否必填 |
|---|---|---|---|---|
| columns | 表格列的配置描述 | Array | - | No |
| data | 显示的数据 | Array | - | No |
| loading | 页面是否加载中 | Boolean | false | No |
| border | 是否带有纵向边框 | Boolean | false | No |
| dense | 表格紧凑型 | Boolean | false | No |
| ellipsis | 超过宽度将自动省略 | Boolean | false | No |
| maxHeight | 表格最大高度 | String/Number | auto | No |
| width | 表格宽度 | String/Number | auto | No |
| layout | 布局模式 | auto/fixed | fixed | No |
| hideHeader | 隐藏表头 | Boolean | false | No |
| fixedHeader | 固定表头 | Boolean | false | No |
插槽
| 插槽名 | 说明 | 作用域参数 |
|---|---|---|
cell.${prop} | 自定义 prop 列的内容单元格 | { source, prop, data, column } |
header.${prop} | 自定义 prop 列的表头单元格 | column |
expand.${prop} | 不推荐使用,自定义 expand 列的触发器 | { source, prop, data, column } |
Column API
属性
| 属性名 | 说明 | 类型 | 默认值 | 是否必填 |
|---|---|---|---|---|
| label | 显示的标题 | String | - | No |
| prop | 对应列的字段名 | String | - | No |
| align | 对应列的字段名 | left / center / right | - | No |
| width | 对应列的宽度 | String/Number | - | No |
| minWidth | 对应列的最小宽度 | String/Number | 80px | No |
| maxWidth | 对应列的最大宽度 | String | - | No |
| ellipsis | 超过宽度将自动省略 | Boolean | false | No |
| fixed | 列是否固定左侧或右侧,如果为 true 则为 left | true / left / right | - | No |
| sorter | 排序函数,提供 Array.sort 的参数函数,如需要服务端排序则设置为 remote | Function / Boolean / remote | false | No |
| filter | 过滤函数,一个返回值为 Boolean 的函数,如需要服务端排序则设置为 remote | Function / Boolean / remote | false | No |
| filters | 筛选项,默认情况下会根据 data 生成,也可传入 Array 进行自定义 | Array / Boolean | - | No |
插槽
| 插槽名 | 说明 | 作用域参数 |
|---|---|---|
default | 自定义 prop 列的内容单元格 | { source, prop, data, column } |
header | 自定义 prop 列的表头单元格 | column |
expand | 不推荐使用,自定义 expand 列的触发器 | { source, prop, data, column } |