<docs> --- order: 2 title: zh-CN: 带搜索框 en-US: Search --- ## zh-CN 带搜索框的穿梭框,可以自定义搜索函数。 ## en-US Transfer with a search box. </docs> <template> <a-transfer v-model:target-keys="targetKeys" :data-source="mockData" show-search :filter-option="filterOption" :render="item => item.title" @change="handleChange" @search="handleSearch" /> </template> <script lang="ts"> import { defineComponent, onMounted, ref } from 'vue'; interface MockData { key: string; title: string; description: string; chosen: boolean; } export default defineComponent({ setup() { const mockData = ref<MockData[]>([]); const targetKeys = ref<string[]>([]); onMounted(() => { getMock(); }); const getMock = () => { const keys = []; const mData = []; for (let i = 0; i < 20; i++) { const data = { key: i.toString(), title: `content${i + 1}`, description: `description of content${i + 1}`, chosen: Math.random() * 2 > 1, }; if (data.chosen) { keys.push(data.key); } mData.push(data); } mockData.value = mData; targetKeys.value = keys; }; const filterOption = (inputValue: string, option: MockData) => { return option.description.indexOf(inputValue) > -1; }; const handleChange = (keys: string[], direction: string, moveKeys: string[]) => { console.log(keys, direction, moveKeys); }; const handleSearch = (dir: string, value: string) => { console.log('search:', dir, value); }; return { mockData, targetKeys, filterOption, handleChange, handleSearch, }; }, }); </script>