<template>
<el-transfer
filterable
:filter-method="filterMethod"
filter-placeholder="请输入城市拼音"
v-model="value"
:data="data">
</el-transfer>
</template>
<script>
export default {
data() {
const generateData = _ => {
const data = [];
const cities = ['上海', '北京', '广州', '深圳', '南京', '西安', '成都'];
const pinyin = ['shanghai', 'beijing', 'guangzhou', 'shenzhen', 'nanjing', 'xian', 'chengdu'];
cities.forEach((city, index) => {
data.push({
label: city,
key: index,
pinyin: pinyin[index]
});
});
return data;
};
return {
data: generateData(),
value: [],
/*
* 使用 filter-method 定义自己的搜索逻辑。
* filter-method 接收一个方法,当搜索关键字变化时,
* 会将当前搜索的关键字和每个数据项传给该方法。若方法返回 true,则会在搜索结果中显示对应的数据项。
*/
filterMethod(query, item) {
console.log(query, item)//搜索的关键字 shanghai item则是data中的一条数据
// 如果要检索的字符串值没有出现,则该方法返回 -1, 搜索到为0 0>-1 大于-1是检索出现了
console.log(item.pinyin.indexOf(query) > -1) //true
return item.pinyin.indexOf(query) > -1;
}
};
}
};
</script>