Transfer 穿梭框

基础用法

Transfer 的数据通过 data 属性传入。数据需要是一个对象数组,每个对象有以下属性:key 为数据的唯一标识,label 为显示文本,disabled 表示该项数据是否禁止转移。 目标列表中的数据项会同步到绑定至 v-model 的变量,值为数据项的 key 所组成的数组。 当然,如果希望在初始状态时目标列表不为空,可以为 v-model 绑定的变量赋予一个初始值。

暂无数据

可筛选

您可以搜索和过滤数据项。

filterable 属性设置为 true 以启用筛选模式。 默认情况下,如果数据项的 label 包含搜索关键字,它将显示在结果中。 您还可以通过 filter-method 属性实现自己的筛选方法。 它接受一个方法,并在关键字更改时将搜索关键字和每个数据项传递给它。 对于某个数据项,如果方法返回 true,它将显示在结果列表中。

暂无数据

可自定义

您可以自定义列表标题、按钮文本、数据项的渲染函数、列表页脚中的选中状态文本以及列表页脚内容。

可分别用 titlesbutton-textsrender-contentformat 属性来自定义列表标题、按钮的文本、数据项的渲染函数以及列表顶部的勾选状态文案。 此外,您还可以使用作用域插槽来自定义数据项。 对于列表的页脚,提供了两个具名插槽:left-footerright-footer。 此外,如果您想在初始时勾选某些项目,您可以使用 left-default-checkedright-default-checked。 最后,这个例子演示了 change 事件。 请注意,此演示无法在 JSFiddle 中运行,因为它不支持 JSX 语法。 在实际项目中,如果相关依赖项配置正确,render-content 就可以工作。

使用 render-content 自定义数据项

使用 scoped slot 自定义数据项

自定义空状态内容 2.9.0

当列表为空或没有筛选结果时,您可以自定义其显示内容。

使用 left-emptyright-empty 插槽为每个面板自定义空状态内容。

暂无数据

数据项属性别名

默认情况下,Transfer 会在数据项中寻找 keylabeldisabled 属性。 如果您的数据项有不同的键名,您可以使用 props 属性来定义别名。

此示例中的数据项没有 keylabel,而是有 valuedesc。 因此,您需要为 keylabel 设置别名。

暂无数据

Transfer API

Transfer 属性

名称描述类型默认值
model-value / v-model绑定值object[]
dataTransfer 的数据源object[]
filterable是否可搜索booleanfalse
搜索框的占位符搜索框的占位符string
filter-method自定义搜索方法Function
目标列表元素的排序策略。 如果设置为 original,则目标列表中的元素将保持与数据源相同的顺序。 如果设置为 push,则新添加的元素将被推送到目标列表的底部。 如果设置为 unshift,则新添加的元素将被插入到目标列表的顶部。original枚举自定义列表标题
自定义列表标题自定义列表标题object[]
自定义按钮文案自定义按钮文案object[]
render-content用于数据项的自定义渲染函数object
format列表顶部勾选状态的文案object{}
props数据源的字段别名object
左侧列表初始状态下被勾选的数据的 key 组成的数组左侧列表初始状态下被勾选的数据的 key 组成的数组object[]
右侧列表初始状态下被勾选的数据的 key 组成的数组右侧列表初始状态下被勾选的数据的 key 组成的数组object[]
validate-event是否触发表单验证booleantrue

Transfer 事件

名称描述类型
change右侧列表元素变化时触发Function
左侧列表元素被用户选中 / 取消选中时触发左侧列表元素被用户选中 / 取消选中时触发Function
右侧列表元素被用户选中 / 取消选中时触发右侧列表元素被用户选中 / 取消选中时触发Function

Transfer 插槽

名称描述
default数据项的内容,作用域参数为 { option }
左侧列表底部的内容左侧列表底部的内容
右侧列表底部的内容右侧列表底部的内容
左侧面板为空或无数据匹配过滤器时的内容 2.9.0左侧面板为空或无数据匹配过滤器时的内容
右侧面板为空或无数据匹配过滤器时的内容 2.9.0右侧面板为空或无数据匹配过滤器时的内容

Transfer Exposes

名称描述类型
清空某个面板的搜索关键词清空某个面板的搜索关键词Function
左侧面板 ref左侧面板 refobject
右侧面板 ref右侧面板 refobject

Transfer Panel API

Transfer Panel Exposes

名称描述类型
搜索关键词搜索关键词string

类型声明

显示声明
ts
import type { h as H, VNode } from 'vue'

type TransferKey = string | number

type TransferDirection = 'left' | 'right'

type TransferDataItem = Record<string, any>

type renderContent = (h: typeof H, option: TransferDataItem) => VNode | VNode[]

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

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

来源

组件样式文档

贡献者