项目中用到了elementUI中的远程搜索即 el-autocomplete 组件,估计首次使用的都会遇到一些小问题,只要你能认真看完并且耐心理解,保证能帮到你,效果图如下:

组件代码:

 <el-autocomplete   :popper-class="`cname${index}`" v-model="itemsData" :fetch-suggestions="querySearch"  :debounce=0  @select="handleSelect" v-for="(Item, Index) in itemsData" :key="Index" @focus="oop('cname'+index)"></el-autocomplete> 

js代码:

  data() {
return {
cname: ""
};
}, methods: {
oop(e) {
//这里能获取到点击的input框的自定义类名,这里我命为cname0,cname1,cname3,...
this.cname = e;
}, querySearch(queryString, cb) {
//queryString是input的值,cb是回调函数;
var tem_list = [];
API.wordSuggest({ word: queryString })
.then(rs => {
//这里假设返回的rs是参数为 {word:山西} 的数据,rs= ["山西一零九医院", "山西万荣技师学院", "山西万辉制药", "山西三化饮料", "山西三奇疗养院", "山西三立化工", "山西三通电子", "山西三针脑血管病医院", "山西三院", "山西下"];
rs.map((item, index) => {
var tem_obj = {};
tem_obj.value = item;
tem_list.push(tem_obj);
});
var restaurants = tem_list;
      // 在样式里所有的下拉列表都隐藏了,这里判断如果数据不为空则通过指定的class名显示下拉列表,
// 这时候的restaurants就是要elementUI规定的格式:[{value:"山西一零九医院"}, {value:"山西万荣技师学院"}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
var $cname = document.querySelector("." + this.cname);
restaurants.length > 0 ? ($cname.style.display = "block") : "";
var results = queryString? restaurants.filter(this.createFilter(queryString)): restaurants;
// 调用 callback 返回建议列表的数据
cb(results);
})
.catch(error => {console.log(error);});
},
createFilter(queryString) {
return state => {
return (
state.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0
);
};
}
}, <style>
.el-autocomplete-suggestion {
  display: none;
}
</style>

下面是问题和解决方案,可以结合代码理解

问题1:数据不显示

解决方案:

  那是因为数据的格式有要求,必须是一个数组对象,并且属性名为“value”,不管你怎么处理,最后变成我上面restaurants的格式(比如:[{ value : "山西一零九医院" }])即可;

问题2:没有数据时下拉列表会闪一下

解决方案:

  1. el-autocomplete有个自带的属性 debounce(输入建议的去抖延时),把它设为0;
  2. 写自定义样式让所有下拉列表隐藏:.el-autocomplete-suggestion{display:none;}
  3. 在querySearch函数中让数据不为空的下拉列表显示(实现方法是通过自定义class名,然后让指定的class显示)

解决 el-autocomplete 不显示及没数据时闪一下的问题的更多相关文章

  1. 解决Python向MySQL数据库插入中文数据时出现乱码

    解决Python向MySQL数据库插入中文数据时出现乱码 先在MySQL命令行中输入如下语句查看结果: 只要character_set_client character_set_database ch ...

  2. easyui datagrid 没数据时显示滚动条的解决方法

    今天解决了一个bug,因为datagrid有多列,可是当没有数据的时候,后面的列无法通过滚动条拉动来显示,比较麻烦,而需求要求没有数据也要拉动滚动条查看后面有什么列,一开始在网上找了一些资料,发现都不 ...

  3. 【已解决】C#中往SQLServer插入数据时遇到BUG

    错误信息如下: “System.Data.SqlClient.SqlException”类型的未经处理的异常在 System.Data.dll 中发生 其他信息: “”附近有语法错误. 文字版代码如下 ...

  4. 解决echarts饼图不显示数据为0的数据

    如图所示 饼图数据为0但是还是会显示lableline和lable 解决方法 var echartData = [{ value: data_arry[0]==0?null:data_arry[0], ...

  5. JSP页面使用EL表达式不显示实际数据

    今天在学习有关jsp的相关知识内容时,遇到了el表达式只是显示括号里面的内容 代码如下: <%@ page contentType="text/html;charset=UTF-8&q ...

  6. easyui的datagrid无数据时下方滚动条不显示的解决办法(标题栏显示不完全)

    easyui在写datagrid的时候标题栏有时候因为太多.太长所以无法显示所有的列,而且没数据的时候下方的滚动条是不显示的,这样就无法显示所有的列了.解决办法如下: onLoadSuccess: f ...

  7. bug解决思路——插入数据时,前台不展示数据

    积攒一下平时解决bug时的思路,以后若是一头乱麻时翻出来看看~ 一个bug五一之前就和现场在定位,直到今天才算是定位到问题. 所有bug,还是得重现出来才可以发现问题.现场说登记记录时数据没在前台展示 ...

  8. 解决pl/sql developer中数据库插入数据乱码问题

    最近学习SSM项目开发,用到oracle数据库, 使用管理软件PL/sql developer往数据库表中插入数据时记录乱码.  结果如下: 可以看到中文数据都乱码成了???????问号, 看了网上各 ...

  9. 爬虫爬数据时,post数据乱码解决办法

    最近在写一个爬虫,目标网站是:http://zx.bjmemc.com.cn/,可能是为了防止被爬取数据,它给自身数据加了密.用谷歌自带的抓包工具也不能捕获到数据.于是下了Fiddler.     F ...

随机推荐

  1. 如何用Excel打开CSV文件

    如何用Excel打开CSV文件? CSV文件一般是MS-SQL 导出查询数据的一种格式.格式结构是 用逗号分隔数据,如果直接用Excel打开那么数据不会自动分列.需要进行一定的设置.下面是设置过程. ...

  2. 【时光回溯】【JZOJ3567】【GDKOI2014】石油储备计划

    题目描述 输入 输出 对于每组数据,输出一个整数,表示达到"平衡"状态所需的最小代价. 样例输入 2 3 6 1 5 1 2 1 2 3 2 5 4 5 4 3 2 1 3 1 1 ...

  3. virtualenv安装 以及在PyCharm中的使用

    1.安装前条件 python3.7和 pip(可以使用这个命令升级python -m pip install --upgrade pip) 2.安装virtualenv pip install vir ...

  4. kendo grid 使用小结

    需要注意的: 1. id,如果没有指定id则会导致create.update等操作无法正常使用. 头疼事项: 1. 服务端失败返回error数据.如果是编辑状态,还不能友好提示错误.当然可以使用大量代 ...

  5. 【C++】判断一个图是否有环 无向图 有向图(转载)

    没有找到原文出处,请参考一下链接: http://www.cnblogs.com/hiside/archive/2010/12/01/1893878.html http://topic.csdn.ne ...

  6. WinMail邮件服务器(客户端)环境搭建与配置

    WinMail邮件服务器(客户端)环境搭建与配置      一.在搭建WinMail邮件服务器(客户端)之前必备            (1).在虚拟机上安装两个干净无毒的操作系统          ...

  7. P2532 [AHOI2012]树屋阶梯

    题目:P2532 [AHOI2012]树屋阶梯 思路: 打表之后不难看出是裸的Catalan数.简单证明一下: 对于任意一种合法方案,都可以表示为在左下角先放一个\(k*(n+1-k),k\in[1, ...

  8. Linux Mint 19.1 安装 Docker 过程笔记

    Linux Mint 19.1 安装 Docker 过程笔记 参考了很多教程,可能有很多教程已经过时. 综合记录一下. 首先修改一下系统的源,使用国内的源. 然后安装 docker sudo apt ...

  9. 2018-7-5-dotnet-设计规范-·-抽象定义

    title author date CreateTime categories dotnet 设计规范 · 抽象定义 lindexi 2018-07-05 15:48:20 +0800 2018-2- ...

  10. 当better-scroll遇见了react擦出的火花

    关于better-scroll这个插件前面已经介绍过两次了 从原生js使用到结合服务端发送数据使用都有过介绍 今天给大家分享一下这款插件在react中遇见的坑  总之我真是对这款插件又爱又恨 每次各种 ...