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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
5 cool javascript apps
Mar 24 Javascript
javascript css在IE和Firefox中区别分析
Feb 18 Javascript
jsTree 基于JQuery的排序节点 Bug
Jul 26 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
Feb 02 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
May 28 Javascript
用js的document.write输出的广告无阻塞加载的方法
Jun 05 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
浅析JavaScript作用域链、执行上下文与闭包
Feb 01 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
Oct 25 Javascript
移动适配的几种方案(三种方案)
Nov 25 Javascript
JS设置手机验证码60s等待实现代码
Jun 14 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
php提示undefined index的几种解决方法
2012/05/21 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
一个简单的php路由类
2016/05/29 PHP
不同Jquery版本引发的问题解决
2013/10/14 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
python冒泡排序简单实现方法
2015/07/09 Python
Python中的id()函数指的什么
2017/10/17 Python
Python实现批量压缩图片
2018/01/25 Python
详解python实现线程安全的单例模式
2018/03/05 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
基于python指定包的安装路径方法
2018/10/27 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
详解Python中is和==的区别
2019/03/21 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
详解如何减少python内存的消耗
2019/08/09 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
介绍一下XMLHttpRequest对象
2012/02/12 面试题
vue路由实现登录拦截
2021/03/24 Vue.js
运动会邀请函范文
2014/01/31 职场文书
旷课检讨书1000字
2014/02/14 职场文书
公司总经理任命书
2014/06/05 职场文书
留学推荐信中文范文
2015/03/26 职场文书
道士塔读书笔记
2015/06/30 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL