zoukankan      html  css  js  c++  java
  • element-ui带输入建议的input框踩坑

    踩坑问题描述:

    问题一:

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


    问题解决方案:
    这个问题开始我以为是传进 callback 的 data 格式不对。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})
              }
            })

    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 = ''
          }

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

    debounce ? 函数去抖 ? 应该就是它了!

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

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



  • 相关阅读:
    母版页中对控件ID的处理
    使用Gridview绑定数据库中的图片
    导出Excel表格时,如何把数据库表中的编号转换成配置文件中的"汉字"
    ORA01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
    Oracle 把触发器说透
    规模估算失准 软件开发成空中楼阁
    在web开发中的三个层次使用事务
    oninput,onpropertychange,onchange的用法和区别
    Oracle 把游标说透
    在datatable中,在指定位置插入列
  • 原文地址:https://www.cnblogs.com/yanl55555/p/12543987.html
Copyright © 2011-2022 走看看