treeselect远程搜索获取数据问题的解决

Treeselect是基于vue的树形结构组件,我想要实现:点击输入框获取全部数据,输入关键字远程搜索并展示匹配的结果。有两种方式:
1.异步模式
使用:async="true" + :load-options="loadOptions",代码如下:

<treeselect
  v-model="internalValue"
  ref="selectRef"
  :async="true"   <!-- 必须异步 -->
  :load-options="loadOptions" <!-- 执行从远程服务器请求数据 -->
  :open-on-focus="true"      <!-- 聚焦展开下拉 -->
  placeholder="请选择"
/>

methods: {
  loadOptions({ action, searchQuery, callback }) {
    if (action === 'LOAD_ROOT_OPTIONS') {
      // 获取焦点展开下拉,显示全部数据
      getList(。。。)
    }

    if (action === 'ASYNC_SEARCH') {
      // 输入时搜索,获取数据渲染
      getList(。。。)
    }
  }
}


但是点击展开使用 LOAD_ROOT_OPTIONS判断获取数据并没有触发,这个问题没有解决,所以又有第二种方法

2.使用@search-change在搜索查询更改后获取的数据进行替换options,但需要禁止本地过滤,解决方法如下:

<treeselect
  v-model="internalValue"
  ref="selectRef"
  :options="options"
  @search-change="searchChange"  <!-- 加上这个 -->
  :searchable="true"
  :filterable="false"   <!-- 禁止本地过滤 -->
  placeholder="请选择"
/>

然后在searchChange方法中加入禁止本地筛选:

searchChange(query){
   this.loading = true;
   //禁止本地筛选
   this.$refs.selectRef.localSearch.active = false 
   //掉接口获取数据
   getList(。。。)
},

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值