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 相关文章推荐
url 编码 js url传参中文乱码解决方案
Apr 11 Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
JavaScript原型及原型链终极详解
Jan 04 Javascript
vue.js入门(3)——详解组件通信
Dec 02 Javascript
vue实现留言板todolist功能
Aug 16 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
Sep 26 Javascript
基于vue.js快速搭建图书管理平台
Oct 29 Javascript
jQuery实现朋友圈查看图片
Sep 11 jQuery
jquery实现淡入淡出轮播图效果
Dec 13 jQuery
微信小程序外卖选购页实现切换分类与数量加减功能案例
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 常用字符串函数总结
2008/03/15 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
加拿大时装零售商:Influence U
2018/12/22 全球购物
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
大学生村官典型材料
2014/01/12 职场文书
2014年高考决心书
2014/03/11 职场文书
小学生运动会报道稿
2014/09/12 职场文书
党校毕业心得体会
2014/09/13 职场文书
学生检讨书怎么写
2014/10/09 职场文书
《鲸》教学反思
2016/02/23 职场文书
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python