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

【element-ui】el-autocomplete实现 无数据匹配

文章目录

  • 方法一:使用 default 插槽
  • 方法二:使用 empty-text 属性(适用于列表类型)
  • 总结


在使用 Element UI 的 el-autocomplete 组件时,如果你希望在没有任何数据匹配的情况下显示特定的内容,你可以通过自定义模板或者通过插槽(slot)来实现。下面我将提供两种方法来实现当没有数据匹配时显示自定义内容。

方法一:使用 default 插槽

el-autocomplete 组件提供了一个 default 插槽,你可以在这个插槽中定义当没有匹配项时显示的内容。

<template><el-autocompletepopper-class="my-autocomplete"v-model="query":fetch-suggestions="querySearch"placeholder="请输入内容"@select="handleSelect"><template slot="default" slot-scope="{ item }"><div v-if="item">{{ item.value }}</div><div v-else>没有找到匹配的数据</div></template></el-autocomplete>
</template><script>
export default {data() {return {query: ''};},methods: {querySearch(queryString, cb) {const results = queryString ? this.filterData(queryString) : [];// 如果没有数据,你可以在这里处理,比如在回调中返回一个特定的对象或字符串if (results.length === 0) {cb([{ value: '没有找到匹配的数据' }]);} else {cb(results);}},filterData(queryString) {// 这里应该是你的过滤逻辑,返回匹配的数据数组return [{ value: '示例数据' }]; // 示例数据,根据实际情况填充},handleSelect(item) {console.log(item);}}
};
</script>

方法二:使用 empty-text 属性(适用于列表类型)

如果你使用的是下拉列表(如 el-select),可以使用 empty-text 属性来设置没有数据时的显示文本。但 el-autocomplete 主要用于输入建议,并不直接支持 empty-text。不过,你可以通过自定义下拉列表的样式来间接实现类似的效果。例如:

<el-autocompletev-model="query":fetch-suggestions="querySearch"placeholder="请输入内容"><template slot="default" slot-scope="{ item }"><div>{{ item.value }}</div></template>
</el-autocomplete>
在 CSS 中添加样式来处理空状态:.el-autocomplete-suggestion__wrap {min-height: 40px; /* 根据需要调整 */
}
.el-autocomplete-suggestion__list {padding: 0; /* 根据需要调整 */
}
.el-autocomplete-suggestion__list li {padding: 10px; /* 根据需要调整 */
}
.el-autocomplete-suggestion__list li:empty::before {content: "没有找到匹配的数据"; /* 设置没有数据时的显示内容 */color: #999; /* 根据需要调整颜色 */
}

注意:上面的 CSS 方法依赖于 li 元素为空时使用 ::before 伪元素来添加内容,这种方法在某些情况下可能不够稳定,特别是在动态内容更新时。更好的方式是直接在 default 插槽中处理无数据的情况。

总结

总之,最推荐的方式是使用第一种方法,通过 default 插槽来灵活控制无匹配数据时的显示内容。这样可以更直接地控制 UI 的表现和逻辑。

http://www.lryc.cn/news/2404704.html

相关文章:

  • NLP学习路线图(二十):FastText
  • 力扣面试150题--除法求值
  • SQL进阶之旅 Day 20:锁与并发控制技巧
  • 美业破局:AI智能体如何用数据重塑战略决策(5/6)
  • 生成模型+两种机器学习范式
  • 【学习笔记】Python金融基础
  • 在Linux查看电脑的GPU型号
  • A Execllent Software Project Review and Solutions
  • windows命令行面板升级Git版本
  • Langgraph实战--自定义embeding
  • 大故障,阿里云核心域名疑似被劫持
  • 什么是「镜像」?(Docker Image)
  • SQLMesh实战:用虚拟数据环境和自动化测试重新定义数据工程
  • 服务器健康摩尔斯电码:深度解读S0-S5状态指示灯
  • 设计模式基础概念(行为模式):模板方法模式 (Template Method)
  • 传统业务对接AI-AI编程框架-Rasa的业务应用实战(番外篇2)-- Rasa 训练数据文件的清理
  • LVDS的几个关键电压概念
  • 2023年ASOC SCI2区TOP,随机跟随蚁群优化算法RFACO,深度解析+性能实测
  • DLL动态库实现文件遍历功能(Windows编程)
  • Java Map完全指南:从基础到高级应用
  • jvm 垃圾收集算法 详解
  • [特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
  • Nginx Stream 层连接数限流实战ngx_stream_limit_conn_module
  • Spring Boot 定时任务的使用
  • Flutter:下拉框选择
  • SpringAI(GA):Nacos2下的分布式MCP
  • AC68U刷梅林384/386版本后不能 降级回380,升降级解决办法
  • [AI绘画]sd学习记录(二)文生图参数进阶
  • CRM管理系统中的客户分类与标签管理技巧:提升转化率的核心策略
  • 怎么解决cesium加载模型太黑,程序崩溃,不显示,位置不对模型太大,Cesium加载gltf/glb模型后变暗