需求:通过筛选,下拉框显示与筛选符合的值。
本来可以使用 filterable 就可以了,但是这个我先加上之后没有匹配到合适的,百度后了解这个属性只能为简单的字段进行筛选,我的下拉框值全是中文,筛选就不精准 找不到人。
<el-form-item :label="$t('邮件通知人:')" prop="changeUser" style="width: 100%">
<el-select v-model="ruleForm.changeUser" filterable multiple placeholder="请选择邮件通知人" :filter-method="customFilterMethod">
<el-option v-for="item in dialogInfo.options" :key="item.emp_name" :label="item.emp_name" :value="item.email" />
</el-select>
我这里是选多个,所以我绑定的ruleForm.changeUser是数组,dialogInfo. 是从接口获取的原始数据。
//筛选方法
const customFilterMethod = (query) => {
const normalizedQuery = query ? query.trim().toLowerCase() : ''
if (normalizedQuery) {
dialogInfo.options = dialogInfo.filterOption.filter((item) => item.emp_name.trim().toLowerCase().includes(normalizedQuery))
} else {
dialogInfo.options = dialogInfo.filterOption
}
}