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 相关文章推荐
js过滤数组重复元素的方法
Sep 05 Javascript
javascript + jquery实现定时修改文章标题
Mar 19 Javascript
jquery实现的树形目录实例
Jun 26 Javascript
JavaScript实现动态添加,删除行的方法实例详解
Jul 02 Javascript
js实现移动端微信页面禁止字体放大
Feb 16 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
Oct 25 Javascript
详解Angular中通过$location获取地址栏的参数
Aug 02 Javascript
js变量声明var使用与不使用的区别详解
Jan 21 Javascript
利用Angular7开发一个Radio组件的全过程
Jul 11 Javascript
three.js 将图片马赛克化的示例代码
Jul 31 Javascript
使用Mock.js生成前端测试数据
Dec 13 Javascript
JavaScript 绘制饼图的示例
Feb 19 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中如何调用webservice的实例参考
2013/04/25 PHP
php事件驱动化设计详解
2016/11/10 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
详解如何在NodeJS项目中优雅的使用ES6
2017/04/22 NodeJs
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
Python实现句子翻译功能
2017/11/14 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
python实现弹窗祝福效果
2019/04/07 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
安全先进班组材料
2014/12/26 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
导游词之五台山
2019/10/11 职场文书
用Python生成会跳舞的美女
2022/01/18 Python