el-select中加入filterable屬性,就開啓了搜索功能,然後我們用:filter-method="dataFilter"可以自定義一個搜索篩選條件,在這裏來寫我們自己的邏輯代碼。監聽輸入框裏面輸入文字後,自動調用後臺接口獲取下拉框的數據
<template>
<section class="p-10">
<el-select clearable v-model="value" placeholder="請選擇" filterable :filter-method="dataFilter">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</section>
</template>
<script>
export default {
data() {
return {
optionsCopy: [{
value: '1',
label: 'meat'
}, {
value: '2',
label: 'drink'
}, {
value: '3',
label: 'food'
}, {
value: '4',
label: '龍鬚麪'
}, {
value: '5',
label: '北京烤鴨'
}],
options: [{
value: '1',
label: 'meat'
}, {
value: '2',
label: 'drink'
}, {
value: '3',
label: 'food'
}, {
value: '4',
label: '龍鬚麪'
}, {
value: '5',
label: '北京烤鴨'
}],
value: ''
};
},
methods: {
dataFilter(val) {
this.value = val;
if (val) { //val存在
this.options = this.optionsCopy.filter((item) => {
if (!!~item.label.indexOf(val) || !!~item.label.toUpperCase().indexOf(val.toUpperCase())) {
return true
}
})
} else { //val爲空時,還原數組
this.options = this.optionsCopy;
}
}
}
};
</script>