代码如下,在搜索时调用handleSearch方法,去实时更新下拉选择的选项数据。但是下拉选项没有因为搜索更新,打印搜索后的list结果,发现list确实更新了有数据,但是视图没有更新,显示为空。
<a-select
v-model="xxx"
show-search
placeholder="Please enter"
:show-arrow="false"
:not-found-content="null"
@search="handleSearch"
>
<a-select-option v-for="item in list" :key="item.value" :value="item.value">
{{ item.label }}
</a-select-option>
</a-select>
data() {
return {
xxx: '',
list: []
}
},
methods: {
handleSearch(val){
this.$http(url, { keyword: val }).then(res => {
this.list = res.list
})
}
}
刚开始还以为是diff的问题,视图没有更新更改后的数据。调试了半天之后才发现ant-design的select组件筛选下拉选项filterOption是默认打开的,也就是说你自己在搜索的时候传到select组件,组件内部又根据你搜索的关键字又筛选了一遍,将筛选后的结果显示到页面上。导致了数据更新了,视图却没有显示正确的远程搜索的结果
解决办法就是手动设置filterOption为false在select组件上