实现远程搜索功能

项目在开发的过程中,有时候接口返回的数据过得,有上千甚至上万条数据,下拉框不能将数据全部列上去,这样页面会出现卡顿,造成性能问题,以及影响用户的体验度,所以进行优化,通过远程搜索从服务器搜索数据,输入关键字进行查找可以解决这一问题

  • 这是从接口返回的数据,可以看出数据过于庞大,不能将数据直接进行绑定;

 <el-select v-model="patient.operationId" filterable placeholder="请选择" style="width:100%"
     :filter-method="selectOperation" class="diagInput" remote clearable multiple
      @change="updPatientList('operation_id', 'operationId')">
           <el-option v-for="item in operationList" :key="item.id" :label="item.name" 
            :value="item.id">
                   <span style="float: left">{{ item.name }}</span>
                   <span style="float: right; color: #8492a6; font-size: 13px">
                       {{ item.id }}</span>
           </el-option>
 </el-select>
  • 其中要使用以下属性;
remote是否为远程搜索
filterable是否可搜索
filter-method自定义搜索方法
  • operationList 是将接口返回的数据截取了100条,所以下拉框只能显示100条;
  async findSSMC() {
      await findOperationName().then(res => {
        this.operationListAll = res.rows
        this.operationList = res.rows.slice(0, 100)
      })
    },
  •  operationListAll是接口中返回的所有数据,是个数组;selectOperation这个方法的val就是你在输入框中输入的内容,输入的是字母,会先进行个转大写,或者是汉字,再根据数据进行筛选,返回匹配的内容;如果没有输入,下拉的选项还是之前的100条数据;

    selectOperation(val) {
      let mh = [];
      let vs = this.operationListAll;
      if (val) {
        let upperVal = val.toUpperCase();
        mh = vs.filter(item => item.name.includes(val) || (item.py && 
        item.py.toUpperCase().includes(upperVal)));
      } else {
        mh = vs.slice(0, 100);
      }
      this.operationList = mh;

    },

 而updPatientList这个方法是搜索后下拉的内容选中后,输入框的值发生改变进行的方法,在此不多强调。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值