【问题描述】: 在使用ElementUI select 组件时,使用filter-method可搜索来实现与后端接口的交互,当我在搜索框输入字段,后台返回字段后自动清除,导致功能不可用
【问题代码】:
``
<template>
<el-select
v-model="selectVal"
filterable
clearable
placeholder="请选择"
:loading="loading"
:filter-method="getBlackData"
@clear="getBlackData"
>
<el-option v-for="(item,index) in options" :key="index" :label="item.label" :value="item.value" >
</el-option>
</el-select>
</template>
<script>
import {getData,} from '@/api';
export default {
data() {
return {
mockOptions: [
{ value: '选项1', label: '黄金糕' },
{ value: '选项2', label: '双皮奶' },
{ value: '选项3', label: '蚵仔煎' },
{ value: '选项4', label: '龙须面' },
{ value: '选项5', label: '北京烤鸭' }
],
selectVal: '',
timer: null
};
},
methods: {
getBlackData(val) {
this.loading = true;
getData(val).then(res=>{
this.loading = false;
this.options = res || [];
}).catch(()=>{
this.loading = false;
});
}
}
}
</script>
【官网示例】:
为el-select添加filterable属性即可启用搜索功能。默认情况下,Select 会找出所有label属性包含输入值的选项。如果希望使用其他的搜索逻辑,可以通过传入一个filter-method来实现。filter-method为一个Function,它会在输入值发生变化时调用,参数为当前输入值。
<template>
<el-select v-model="value" filterable placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</template>
<script>
export default {
data() {
return {
options: [
{ value: '选项1', label: '黄金糕' },
{ value: '选项2', label: '双皮奶' },
{ value: '选项3', label: '蚵仔煎' },
{ value: '选项4', label: '龙须面' },
{ value: '选项5', label: '北京烤鸭' }
],
value: ''
}
}
}
</script>
【问题解决】:
<el-option v-for="(item,index) in options" :key="index" :label="item.label" :value="item.value" >
里面v-for key用的index,如果用item.value,就好了,需要和value保持一致;
待续。。。
我要看一下为什么index不可以
【乱写为了揍够字数,不好意思】