当前位置: 首页 > news >正文

el-select的搜索功能

el-select的相关信息:

最基本信息

v-model的值为当前被选中的el-option的 value 属性值

:label是选择器可以看到的内容

过滤搜索

普通过滤搜索

<el-selectv-model="selectedCountry"placeholder="请选择国家"filterable:loading="loading"style="width: 130%;"><el-optionv-for="item in filteredCountries":key="item":label="item":value="item"/>
</el-select>

其中filteredCountries需要在created中初始化完成或者直接在data中定义,之后如果想实现select选择器中过滤(根据你的输入),可以添加filterable,就可以输入数据自动匹配符合条件的filteredCountries中的item列表,大致的逻辑应该是不区分大小写的模糊搜索。

远程搜索

如果你不想使用默认的搜索,可以使用远程搜索:

<el-selectv-model="selectedCountry"placeholder="请选择国家"filterableremote:remote-method="remoteMethod":loading="loading"style="width: 130%;">
remoteMethod(query) {if (query !== '') {this.loading = true;setTimeout(() => {this.loading = false;this.filteredCountries = this.countries.filter(item =>item.toLowerCase().includes(query.toLowerCase()));}, 200);} else {this.filteredCountries = this.countries;}}

这个示例代码中,remoteremote-method是为了实现远程搜索的功能。

  1. remote: 当你在输入框中输入内容时,启动远程搜索模式。这意味着输入内容不会直接过滤已有数据,而是通过调用远程方法来获取匹配的数据。
  2. remote-method: 这是你自定义的一个方法,用来处理用户输入并更新候选项。在这个示例中,当输入内容(query)不为空时:
    • 设置loadingtrue,表示正在加载数据。
    • 使用setTimeout模拟数据加载延迟,200毫秒后将loading设置为false
    • 使用filter方法从现有的countries数据中筛选出符合输入内容的项,并更新到filteredCountries中。
    • 如果输入内容为空,则直接将所有的countries数据赋值给filteredCountries

远程搜索模式相关解释

远程搜索模式(Remote Search Mode)是一种实现搜索功能的方式,特别是在需要通过服务器或远程数据源获取数据时。与本地搜索不同,远程搜索会在用户输入搜索关键字时,通过调用一个远程方法来获取或过滤数据。这样做的好处是可以处理大量数据或动态数据,而不会将所有数据都加载到本地。

在上面代码中,remote属性启用远程搜索模式,而remote-method是实际执行远程搜索的函数。具体过程如下:

  1. 用户输入:当用户在输入框中输入内容时,会触发远程搜索。
  2. 调用远程方法remote-method会被调用。这个方法根据用户输入的关键字,查询符合条件的数据。
  3. 更新数据:远程方法获取到数据后,将其更新到组件中,以供显示。

这种模式特别适用于以下情况:

  • 数据量非常大,无法一次性加载到本地。
  • 数据需要从服务器端实时获取或过滤。
  • 数据需要动态更新,例如从数据库或API接口中获取。

数据量非常大,无法一次性加载到本地的意思是filteredCountries值无法一次性在created中获取吗,我这里如果在created中获取了这个数据,是不是就意味着可以一次性加载到本地了,那我写这个remote相关的内容是不是白写

远程搜索总结

如果你的filteredCountries数据在组件的created生命周期钩子中一次性获取,那么理论上你是可以将所有数据一次性加载到本地的。这种情况下,你确实不需要使用远程搜索模式和相关方法,因为所有的数据已经在本地了,可以直接进行过滤和展示。

但是需要注意的是,是否选择一次性加载数据到本地,取决于数据量的大小和性能的考虑。如果数据量非常大(例如成千上万条数据),一次性加载到本地可能会导致性能问题,比如页面加载变慢或浏览器内存占用过高。这种情况下,使用远程搜索可以显著改善用户体验,因为它只加载和展示用户当前需要的那部分数据。

总结一下:

  • 数据量较小:可以在created中一次性加载数据,直接在本地进行过滤和展示。
  • 数据量非常大:建议使用远程搜索模式,只加载和展示用户输入匹配的数据,避免性能问题。
http://www.lryc.cn/news/498410.html

相关文章:

  • MFC实现全屏功能
  • 网络安全技术详解:虚拟专用网络(VPN) 安全信息与事件管理(SIEM)
  • v-model 根据后端接口返回的数据动态地确定要绑定的变量
  • 图形开发基础之在WinForms中使用OpenTK.GLControl进行图形绘制
  • 离散数学重点复习
  • Javaweb梳理21——Servlet
  • 推荐学习笔记:矩阵补充和矩阵分解
  • etcd分布式存储系统快速入门指南
  • 解决VUE3 Vite打包后动态图片资源不显示问题
  • 大数据新视界 -- 大数据大厂之 Hive 临时表与视图:灵活数据处理的技巧(上)(29 / 30)
  • Android学习14--charger
  • 页面开发样式和布局入门:Vite + Vue 3 + Less
  • 瑞芯微RK3566/RK3568开发板安卓11固件ROOT教程,Purple Pi OH演示
  • Netty 入门应用:结合 Redis 实现服务器通信
  • 试题转excel;pdf转excel;试卷转Excel,word试题转excel
  • 查看网卡设备Bus号
  • 鸿蒙Next星河版高级用例之网络请求和自适应布局以及响应式布局
  • 鸿蒙技术分享:敲鸿蒙木鱼,积____功德——鸿蒙元服务开发:从入门到放弃(3)...
  • Hadoop生态圈框架部署 伪集群版(六)- MySQL安装配置
  • 【Docker】创建Docker并部署Web站点
  • 实验七 用 MATLAB 设计 FIR 数字滤波器
  • 学习ESP32开发板安装鸿蒙操作系统(新板子esp32c3不支持)
  • asp.net core过滤器应用
  • 力扣面试题 31 - 特定深度节点链表 C语言解法
  • WordPress阅读文章显示太慢的处理
  • 关于多个线程共享一个实例对象
  • 【C++】printf 函数详解与格式化输出控制
  • HDFS 操作命令
  • html ul li 首页渲染多条数据 但只展示八条,其余的数据全部隐藏,通过icon图标 进行展示
  • Facebook:筑牢隐私安全堡垒,守护社交净土