Skip to content

FxTransfer 穿梭框

基础用法

数据通过 data 属性传入。数据需为对象数组,每个对象应包含:key(唯一标识)、label(显示文本)、disabled(是否禁用)。目标列内容与 v-model 绑定变量同步,该变量值为目标项 key 数组;初始化 v-model 即可预选目标项。

可搜索

可搜索过滤数据项。设置 filterabletrue 开启过滤;默认按 label 包含匹配。也可通过 filter-method 自定义过滤逻辑——该方法接收搜索关键字与每个数据项,返回 true 即纳入结果。

自定义

可自定义列标题、按钮文本、数据项渲染、列表头部勾选计数文本、列底部内容。分别用 titlesbutton-textsrender-content / 默认作用域插槽、formatleft-footer / right-footerleft-default-checkedright-default-checked 可设置初始勾选项。

自定义空态

可自定义列表为空、或过滤无匹配结果时的内容。通过 left-emptyright-empty 插槽分别定制两侧面板的空态。

字段别名

默认情况下,穿梭框会在数据项中查找 keylabeldisabled。若数据项字段名不同,可用 props 属性定义别名。

虚拟滚动

数据量较大时可开启虚拟滚动提升性能。设置 virtual-scrolltrue 开启,可用 item-size 自定义行高(默认 30px)。

API

Attributes

属性说明类型默认值
model-value (v-model)绑定值Array<string | number>[]
data数据源Record<string, any>[][]
filterable是否可过滤booleanfalse
filter-placeholder过滤框占位文本string'请输入搜索内容'
filter-method自定义过滤方法(query: string, item: Record<string, any>) => boolean
target-order目标列排序策略:original 保持源顺序 / push 追加底部 / unshift 插入顶部'original' / 'push' / 'unshift'original
titles自定义列标题[string, string]['列表 1', '列表 2']
button-texts自定义按钮文本[string, string][]
render-content自定义渲染函数(h, option) => VNode | VNode[]
format列表头部勾选状态文本格式TransferFormat{}
props数据源字段别名TransferPropsAlias
left-default-checked左列初始勾选项 key 数组Array<string | number>[]
right-default-checked右列初始勾选项 key 数组Array<string | number>[]
validate-event是否在值变化时触发表单校验booleantrue
virtual-scroll是否开启虚拟滚动booleanfalse
item-size虚拟滚动单项高度number30

Events

事件名说明类型
change目标列变化时触发(value: TransferKey[], direction: TransferDirection, movedKeys: TransferKey[]) => void
left-check-change左列任一项勾选状态变化时触发(value: TransferKey[], movedKeys?: TransferKey[]) => void
right-check-change右列任一项勾选状态变化时触发(value: TransferKey[], movedKeys?: TransferKey[]) => void

Slots

插槽名说明类型
default自定义数据项内容{ option: TransferDataItem }
left-footer左列底部内容
right-footer右列底部内容
left-empty左列为空或过滤无匹配时的内容
right-empty右列为空或过滤无匹配时的内容

Exposes

名称说明类型
clearQuery清空某侧面板的过滤关键字(which: TransferDirection) => void
leftPanel左侧面板实例Ref<FxTransferPanelInstance | undefined>
rightPanel右侧面板实例Ref<FxTransferPanelInstance | undefined>

Transfer Panel API

Transfer Panel Exposes

名称说明类型
query当前过滤关键字string

类型声明

展开声明
ts
type TransferKey = string | number
type TransferDirection = "left" | "right"
type TransferDataItem = Record<string, any>

interface TransferFormat {
  noChecked?: string
  hasChecked?: string
}

interface TransferPropsAlias {
  label?: string
  key?: string
  disabled?: string
}