element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)


Posted in Javascript onJanuary 15, 2019

前段时间,在实现带输入建议并且支持模糊查询输入框的时候,发现了两个值得注意的小地方。整理出来,以供借鉴。

废话不多说,直接来解决问题。

踩坑问题描述:

问题一:

获取到后端返回的数组,并将数组传入作为 results 传入 callback 后,焦点放在 输入框 上的时候,并未出现任何内容,只出现了一个不完整的空白框。

element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题) 

问题解决方案:

这个问题开始我以为是传进 callbackdata 格式不对。Element官网上是这么写的:

element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)

我传入的是对象数组,是没问题的。

后来我仔细阅读了 Elemen t带建议查询输入框的 Demo 代码并查阅相关资料发现,输入建议列表的数据只来源于
data:[] 中的 value 字段!!!

于是,我将后端传回的 response 处理了,将 response 中需要展示的字段组成 {value:'输入建议'} 这种格式,问题解决。

searchAppNodeApi(searchQuery).then((response) => {
     this.loadAll = response.data
     this.devEuiArr = [];
     for (var i = 0; i < this.loadAll.length; i++) {
      this.devEuiArr.push({"value1": this.loadAll[i].dev_eui})
     }
    })

searchAppNodeApi() 是我请求后端的api方法,拿到请求成功的回调函数的 response 参数。但是, response 里面包含很多我不需要的字段,我只需要其中的 dev_eui 字段。因此,循环 response.data 将其中每条的 dev_eui 重组成 {value:'输入建议'} 的格式并 push 进声明的新数组 devEuiArr

打印如下:

element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)

正确效果如下:

element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)

问题二:

成功出现输入建议列表后,出现一个新的问题,并且 Element 官网的 Demo 代码并未阐述这种情况,就是当我获取到输入建议列表后,切换成另一个输入建议列表,会先闪一下上一个出现的输入建议列表,切换后的输入列表为空也会闪出上个输入建议列表,就算手动清空 callback(data:[]) 中的 data 数组也无济于事。

element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)

问题解决方案:

这个问题开始我以为是需要返回数据后手动清空 callback 里面的 data 数组,像下面这样:

//联想查询时触发
   querySearch(queryString, callback) {
    var results = queryString ? this.devEuiArr.filter(this.createFilter(queryString)) : this.devEuiArr
    // 调用 callback 返回建议列表的数据
    callback(results)
    results = ''
   }

但是一点作用没起,也就是跟变量缓存没什么关系,后来我在 Element 官网的一个小角落发现这么一个参数:

element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)

debounce函数去抖 ? 应该就是它了!
(PS:不了解函数去抖和函数节流的同学可以阅读我的下一篇博文。)

debounce 的默认值是 300ms,我们将其设置为 0ms。

<el-autocomplete
     placeholder="请输入DEVEUI"
     v-model="searchDeveuiVal"
     clearable
     :fetch-suggestions="querySearch"
     size="small"
     :debounce=0
     @keyup.enter.native="searchAppNode">
 </el-autocomplete>

正确效果如下:

element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题) 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery ui dialog里调用datepicker的问题
Aug 06 Javascript
基于jquery的给文章加入关键字链接
Oct 26 Javascript
实现非常简单的js双向数据绑定
Nov 06 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
基于jQuery实现音乐播放试听列表
Apr 14 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
Oct 10 Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 Javascript
jQuery居中元素scrollleft计算方法示例
Jan 16 Javascript
微信小程序支付之c#后台实现方法
Oct 19 Javascript
微信小程序实现左滑动删除效果
Mar 30 Javascript
JQuery常用简单动画操作方法回顾与总结
Dec 07 jQuery
mustache.js实现首页元件动态渲染的示例代码
Dec 28 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 #Javascript
微信 jssdk 签名错误invalid signature的解决方法
Jan 14 #Javascript
详解从react转职到vue开发的项目准备
Jan 14 #Javascript
node全局变量__dirname与__filename的区别
Jan 14 #Javascript
微信小程序时间轴实现方法示例
Jan 14 #Javascript
浅谈webpack devtool里的7种SourceMap模式
Jan 14 #Javascript
关于vue的npm run dev和npm run build的区别介绍
Jan 14 #Javascript
You might like
用PHP动态创建Flash动画
2006/10/09 PHP
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
php mssql 日期出现中文字符的解决方法
2009/03/10 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
Python中无限元素列表的实现方法
2014/08/18 Python
Python读写Excel文件方法介绍
2014/11/22 Python
Python中自定义函数的教程
2015/04/27 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python脚本处理空格的方法
2016/08/08 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
Python如何发布程序的详细教程
2018/10/09 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
临床医学系毕业生推荐信
2013/11/09 职场文书
物业消防安全责任书
2014/07/23 职场文书
邀请函的格式
2015/01/30 职场文书
python xlwt模块的使用解析
2021/04/13 Python
国产动画《万圣街》日语配音版制作决定!
2022/03/20 国漫