首页 > 其他分享 >element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)

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

时间:2023-07-11 18:34:14浏览次数:43  
标签:建议 element callback 列表 data response 输入

element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
原文链接:https://blog.csdn.net/wyhstars/article/details/81672195

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

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


踩坑问题描述:

  • 问题一:

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

  • 问题解决方案:

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

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

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

 searchAppNodeApi(searchQuery).then(response => {
          this.loadAll = response.data
          this.devEuiArr = [];
          for (let item of this.loadAll) {
            this.devEuiArr.push({"value1": item.dev_eui})
          }
        })
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

打印如下:

正确效果如下:


  • 问题二:

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

  • 问题解决方案:

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

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

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

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

正确效果如下:


Programming is an art form.

标签:建议,element,callback,列表,data,response,输入
From: https://www.cnblogs.com/sunny3158/p/17545628.html

相关文章

  • elementui文本框_element UI el-autocomplete组件 带输入建议的输入框
    elementui文本框_elementUIel-autocomplete组件带输入建议的输入框原文链接:elementui文本框_elementUIel-autocomplete带输入建议的输入框项目需求:需要用户在输入框中输入公司全名  但是为了避免用户输入不全  需要做一个带输入建议的输入框element组件:class......
  • 全局重写Element UI中的Message消息提示显示时长
    需求:Message消息提示显示时长过长环境:"vue":"2.6.12"、"element-ui":"^2.15.6"等解决步骤:1、在项目中找到main.js文件2、引人下面两个文件importElementUIfrom'element-ui';import'element-ui/lib/theme-chalk/index.css';3、重写$messa......
  • 老带新营销落地实战:SaaS产品推广新思路,建议收藏学习!
    在SaaS产品所有的销售途径中,老带新是最高效、最省钱的。目前业内关于老带新有三个进化阶段,每个阶段是通过利好政策,刺激消费分享来实现。老带新营销对于SaaS产品用户来说,老带新需要有分享意愿的,前提是客户对产品和服务的认可。那怎么样让客户认可产品和服务是关键,这就要看产品和服务......
  • 使用input标签的时候报错,提示Form elements must have labels: Element has no title
    使用input标签的时候报错,提示Formelementsmusthavelabels:ElementhasnotitleattributeElementhasnoplaceholderattribute大概就是下面这样其实规范化一下,加个label就可以了......
  • 超级好用的仿真计算,输入参数即可。 cruise与simulink联合仿
    超级好用的仿真计算,输入参数即可。cruise与simulink联合仿真计算,一个模型解决纯电两驱动力性经济性计算,根据国标工况载荷,汽车公告测试工况,考虑电池峰值放电时间,放电功率特性,电机峰值扭矩时间,卡钳轴承轮胎阻力矩,计算汽车动力性经济性。不用学,参数输入即可。ID:761000657807451420......
  • pycharm安装django失败,原因是报了一个ssl异常,也就是说和国外源站服务器ssl失败。 所
    pycharm安装django失败,原因是报了一个ssl异常,也就是说和国外源站服务器ssl失败。所以选用国内源站安装:选中Options,输入:“-ihttps://pypi.tuna.tsinghua.edu.cn/simple” ......
  • HJ62 查找输入整数二进制中1的个数
    1.题目读题HJ62 查找输入整数二进制中1的个数 考查点 这道题的考查点可能有以下几个方面:二进制的基本知识,如二进制的表示、转换、运算等,以及负数的补码表示方法。位运算的技巧,如如何利用与、或、异或、左移、右移等操作来实现一些常见的功能,如判断某一位是否为1、清......
  • 简单输入
    输入函数输入函数大致分为两类,一类是单项输入:name=pywebio.input.input("What'syourname")#一个输入框,"What'syourname"是输入框上的提示文本,把输入的内容返回给namepywebio.output.put_text("Yournameis%s"%name)另一类是使用input_group的输入组:inf......
  • 1-13 编写一个程序,打印输入中单词长度的直方图
    ArchlinuxGCC13.1.1 202304292023-07-1021:56:28星期一 点击查看代码#include<stdio.h>#defineMAX7#defineMIN0intmain(){intnw[10];intnum=0;intnc=0;intc=0;inti,j=0;for(i=0;i<10;i++){......
  • 1-9 编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替
    ArchlinuxGCC13.1.1 202304292023-07-1020:47:50星期一点击查看代码#include<stdio.h>intmain(){intc_in,last_in;c_in=0;last_in='a';while((c_in=getchar())!=EOF){if(c_in!=''){......